@@ -34,7 +34,7 @@ let kGoogleAppClientID = (FIRApp.defaultApp()?.options.clientID)!
34
34
let kFacebookAppID = " your fb app ID here "
35
35
36
36
/// A view controller displaying a basic sign-in flow using FIRAuthUI.
37
- class AuthViewController : UIViewController {
37
+ class AuthViewController : UITableViewController {
38
38
// Before running this sample, make sure you've correctly configured
39
39
// the appropriate authentication methods in Firebase console. For more
40
40
// info, see the Auth README at ../../FirebaseAuthUI/README.md
@@ -45,19 +45,22 @@ class AuthViewController: UIViewController {
45
45
private( set) var auth : FIRAuth ? = FIRAuth . auth ( )
46
46
private( set) var authUI : FIRAuthUI ? = FIRAuthUI . defaultAuthUI ( )
47
47
48
- @IBOutlet private var signOutButton : UIButton !
49
- @IBOutlet private var startButton : UIButton !
48
+ @IBOutlet weak var cellSignedIn : UITableViewCell !
49
+ @IBOutlet weak var cellName : UITableViewCell !
50
+ @IBOutlet weak var cellEmail : UITableViewCell !
51
+ @IBOutlet weak var cellUid : UITableViewCell !
52
+ @IBOutlet weak var cellAccessToken : UITableViewCell !
53
+ @IBOutlet weak var cellIdToken : UITableViewCell !
50
54
51
- @IBOutlet private var signedInLabel : UILabel !
52
- @IBOutlet private var nameLabel : UILabel !
53
- @IBOutlet private var emailLabel : UILabel !
54
- @IBOutlet private var uidLabel : UILabel !
55
+ @IBOutlet weak var btnAuthorization : UIBarButtonItem !
55
56
56
- @IBOutlet var topConstraint : NSLayoutConstraint !
57
57
58
58
override func viewWillAppear( animated: Bool ) {
59
59
super. viewWillAppear ( animated)
60
60
61
+ self . tableView. rowHeight = UITableViewAutomaticDimension;
62
+ self . tableView. estimatedRowHeight = 240 ;
63
+
61
64
// If you haven't set up your authentications correctly these buttons
62
65
// will still appear in the UI, but they'll crash the app when tapped.
63
66
let providers : [ FIRAuthProviderUI ] = [
@@ -80,45 +83,70 @@ class AuthViewController: UIViewController {
80
83
}
81
84
}
82
85
83
- @IBAction func startPressed( sender: AnyObject ) {
84
- let controller = self . authUI!. authViewController ( )
85
- self . presentViewController ( controller, animated: true , completion: nil )
86
+ override func tableView( tableView: UITableView , heightForRowAtIndexPath indexPath: NSIndexPath ) -> CGFloat {
87
+ return UITableViewAutomaticDimension
86
88
}
87
89
88
- @IBAction func signOutPressed( sender: AnyObject ) {
89
- do {
90
- try self . auth? . signOut ( )
91
- } catch let error {
92
- // Again, fatalError is not a graceful way to handle errors.
93
- // This error is most likely a network error, so retrying here
94
- // makes sense.
95
- fatalError ( " Could not sign out: \( error) " )
90
+ @IBAction func onAuthorize( sender: AnyObject ) {
91
+ if ( self . auth? . currentUser) != nil {
92
+ do {
93
+ try self . auth? . signOut ( )
94
+ } catch let error {
95
+ // Again, fatalError is not a graceful way to handle errors.
96
+ // This error is most likely a network error, so retrying here
97
+ // makes sense.
98
+ fatalError ( " Could not sign out: \( error) " )
99
+ }
100
+
101
+ for provider in self . authUI!. providers {
102
+ provider. signOutWithAuth ( self . auth!)
103
+ }
104
+
105
+ } else {
106
+ let controller = self . authUI!. authViewController ( )
107
+ self . presentViewController ( controller, animated: true , completion: nil )
96
108
}
97
109
}
98
110
99
111
// Boilerplate
100
112
func updateUI( auth auth: FIRAuth , user: FIRUser ? ) {
101
- if let user = user {
102
- self . signOutButton. enabled = true
103
- self . startButton. enabled = false
104
-
105
- self . signedInLabel. text = " Signed in "
106
- self . nameLabel. text = " Name: " + ( user. displayName ?? " (null) " )
107
- self . emailLabel. text = " Email: " + ( user. email ?? " (null) " )
108
- self . uidLabel. text = " UID: " + user. uid
113
+ if let user = self . auth? . currentUser {
114
+ self . cellSignedIn. textLabel? . text = " Signed in "
115
+ self . cellName. textLabel? . text = user. displayName ?? " (null) "
116
+ self . cellEmail. textLabel? . text = user. email ?? " (null) "
117
+ self . cellUid. textLabel? . text = user. uid
118
+
119
+ self . btnAuthorization. title = " Sign Out " ;
109
120
} else {
110
- self . signOutButton. enabled = false
111
- self . startButton. enabled = true
121
+ self . cellSignedIn. textLabel? . text = " Not signed in "
122
+ self . cellName. textLabel? . text = " null "
123
+ self . cellEmail. textLabel? . text = " null "
124
+ self . cellUid. textLabel? . text = " null "
112
125
113
- self . signedInLabel. text = " Not signed in "
114
- self . nameLabel. text = " Name "
115
- self . emailLabel. text = " Email "
116
- self . uidLabel. text = " UID "
126
+ self . btnAuthorization. title = " Sign In " ;
117
127
}
128
+
129
+ self . cellAccessToken. textLabel? . text = getAllAccessTokens ( )
130
+ self . cellIdToken. textLabel? . text = getAllIdTokens ( )
131
+
132
+ self . tableView. reloadData ( )
118
133
}
119
134
120
- override func viewWillLayoutSubviews( ) {
121
- self . topConstraint. constant = self . topLayoutGuide. length
135
+ func getAllAccessTokens( ) -> String {
136
+ var result = " "
137
+ for provider in self . authUI!. providers {
138
+ result += ( provider. shortName + " : " + provider. accessToken + " \n " )
139
+ }
140
+
141
+ return result
122
142
}
123
143
144
+ func getAllIdTokens( ) -> String {
145
+ var result = " "
146
+ for provider in self . authUI!. providers {
147
+ result += ( provider. shortName + " : " + ( provider. idToken ?? " null " ) + " \n " )
148
+ }
149
+
150
+ return result
151
+ }
124
152
}
0 commit comments