@@ -34,7 +34,7 @@ let kGoogleAppClientID = (FIRApp.defaultApp()?.options.clientID)!
3434let kFacebookAppID = " your fb app ID here "
3535
3636/// A view controller displaying a basic sign-in flow using FIRAuthUI.
37- class AuthViewController : UIViewController {
37+ class AuthViewController : UITableViewController {
3838 // Before running this sample, make sure you've correctly configured
3939 // the appropriate authentication methods in Firebase console. For more
4040 // info, see the Auth README at ../../FirebaseAuthUI/README.md
@@ -45,19 +45,22 @@ class AuthViewController: UIViewController {
4545 private( set) var auth : FIRAuth ? = FIRAuth . auth ( )
4646 private( set) var authUI : FIRAuthUI ? = FIRAuthUI . defaultAuthUI ( )
4747
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 !
5054
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 !
5556
56- @IBOutlet var topConstraint : NSLayoutConstraint !
5757
5858 override func viewWillAppear( animated: Bool ) {
5959 super. viewWillAppear ( animated)
6060
61+ self . tableView. rowHeight = UITableViewAutomaticDimension;
62+ self . tableView. estimatedRowHeight = 240 ;
63+
6164 // If you haven't set up your authentications correctly these buttons
6265 // will still appear in the UI, but they'll crash the app when tapped.
6366 let providers : [ FIRAuthProviderUI ] = [
@@ -80,45 +83,70 @@ class AuthViewController: UIViewController {
8083 }
8184 }
8285
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
8688 }
8789
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 )
96108 }
97109 }
98110
99111 // Boilerplate
100112 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 " ;
109120 } 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 "
112125
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 " ;
117127 }
128+
129+ self . cellAccessToken. textLabel? . text = getAllAccessTokens ( )
130+ self . cellIdToken. textLabel? . text = getAllIdTokens ( )
131+
132+ self . tableView. reloadData ( )
118133 }
119134
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
122142 }
123143
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+ }
124152}
0 commit comments