我已经按照 Firebase 指南在我的 iOS 应用中使用 Firebase 实现了 Google SignIn。问题是每次我测试登录时,它总是要求权限。
Google SignIn涉及的AppDelegate代码如下:
class AppDelegate: UIResponder, UIApplicationDelegate, GIDSignInDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool {
// Override point for customization after application launch.
FIRApp.configure()
GIDSignIn.sharedInstance().clientID = FIRApp.defaultApp()?.options.clientID
GIDSignIn.sharedInstance().delegate = self
return true
}
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
return GIDSignIn.sharedInstance().handle(url, sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String, annotation: options[UIApplicationOpenURLOptionsKey.annotation])
}
func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) {
if let error = error {
print(error.localizedDescription)
return
}
print("Logged in with Google successfull")
// ... Firebase authentication ...
}
}
这里是带有 GIDSignInButton 的 View Controller 的代码:
import UIKit
class IntroViewController: UIViewController, GIDSignInUIDelegate {
@IBOutlet weak var signInButton: GIDSignInButton!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
GIDSignIn.sharedInstance().uiDelegate = self
signInButton.style = .wide
}
}
我在网上搜索了很多,但一无所获...那么,如何防止每次都请求许可?
最佳答案
我相信这是按预期工作的。问题是您在测试您的应用程序时正在注销用户,并且 Google 登录库假设如果用户已明确注销您的应用程序,它应该在之前再次请求该用户的许可将该用户登录。
如果您不显式注销用户,signIn()
调用和signInSilently()
调用都应该成功而不显示任何一种登录屏幕。
关于ios - Firebase Google SignIn 每次都询问权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39052766/