Skip to content

Commit 62757d2

Browse files
committed
add Provider tokens demo for swift project
1 parent 7b6e54f commit 62757d2

File tree

2 files changed

+191
-150
lines changed

2 files changed

+191
-150
lines changed

samples/swift/uidemo/AuthViewController.swift

Lines changed: 63 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ let kGoogleAppClientID = (FIRApp.defaultApp()?.options.clientID)!
3434
let 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

Comments
 (0)