Mar*_*ode 1 ios firebase swift firebase-authentication swift3
我已经使用Firebase实现了gmail登录,并且在按下GIDSignIn.sharedInstance().signIn()连接了操作的自定义按钮后,我成功地让用户验证了他的电子邮件.
但是,一旦用户允许基本配置文件访问它不会返回到应用程序,它只是进入此屏幕:
在用户进行身份验证后,是否有人知道如何让它返回应用程序?这是我的控制台:
017-01-09 09:47:46.565367 Dog_Log[3922:829530] [MC] Reading from private effective user settings.
2017-01-09 09:47:53.702 Dog_Log[3922:] <FIRAnalytics/WARNING> Implementation of application:openURL:sourceApplication:annotation: not found. Please add the handler into your App Delegate. Class: Dog_Log.AppDelegate
Run Code Online (Sandbox Code Playgroud)
问题:
警告告诉您application(_:open:options:)无法找到实施:
2017-01-09 09:47:53.702 Dog_Log[3922:] <FIRAnalytics/WARNING> Implementation of application:openURL:sourceApplication:annotation: not found. Please add the handler into your App Delegate. Class: Dog_Log.AppDelegate
Run Code Online (Sandbox Code Playgroud)
解:
您可能忘记了application(_:open:options:)要实现的方法,通过调用handle(_:sourceApplication:annotation:)它来处理重定向到您的应用程序.你AppDelegate.swift应该看起来像这样(提示在代码注释中):
import UIKit
import Firebase
import GoogleSignIn
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// configure firebase
FIRApp.configure()
// configure google
GIDSignIn.sharedInstance().clientID = FIRApp.defaultApp()?.options.clientID
return true
}
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
// handled to go back to application after google log in
let handled = GIDSignIn.sharedInstance().handle(url, sourceApplication:options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String, annotation: [:])
return handled
}
// other methods
}
Run Code Online (Sandbox Code Playgroud)
您使用的示例ViewController符合GIDSignInUIDelegate和GIDSignInDelegate,以访问signIn方法并将其与自定义按钮的@IBAction一起使用:
import UIKit
import Firebase
import GoogleSignIn
class ViewController: UIViewController, GIDSignInUIDelegate, GIDSignInDelegate {
override func viewDidLoad() {
super.viewDidLoad()
// make the view controller the delegate
GIDSignIn.sharedInstance().uiDelegate = self
GIDSignIn.sharedInstance().delegate = self
}
// your action of the button to call the signIn method
@IBAction func pressGoogleSignInButton(_ sender: UIButton) {
GIDSignIn.sharedInstance().signIn()
}
func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) {
if let error = error {
print("failed to log into google: ", error)
return
}
print("successfully logged into google ", user)
guard let idToken = user.authentication.idToken else { return }
guard let accessToken = user.authentication.accessToken else { return }
let credentials = FIRGoogleAuthProvider.credential(withIDToken: idToken, accessToken: accessToken)
FIRAuth.auth()?.signIn(with: credentials, completion: { (user, error) in
if let error = error {
print("Faild to create a firebase user with google account: ", error)
return
}
guard let uid = user?.uid else { return }
print("Successfully logged into firebase with google ", uid)
// redirect to the next screen after successful login
})
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
468 次 |
| 最近记录: |