我正在開發一個iOS Swift應用程序,它可以讓Google Sing In和Google App Invite。要做到這一點我使用GoogleSignIn V2.2.0如下:GIDSignIn驗證鑰匙串未保存
func loginRequest(onSuccess successBlock:() -> Void, onError errorBlock: (String?) -> Void) {
var signIn = GIDSignIn.sharedInstance()
signIn.shouldFetchBasicProfile = true
signIn.allowsSignInWithWebView = false
signIn.allowsSignInWithBrowser = true
signIn.scopes = ["https://www.googleapis.com/auth/plus.login"]
signIn.delegate = self
if signIn.hasAuthInKeychain(){
signIn.signInSilently()
}else{
signIn.signIn()
}
}
func signIn(signIn: GIDSignIn!, didSignInForUser user: GIDGoogleUser!, withError error: NSError!) {
if (error == nil) {
// managing login data here
self.successBlock()
} else {
self.errorBlock(error.localizedDescription)
}
}
到這裏一切都按預期工作,我能夠成功登錄我需要什麼未來,如上所述,是使用需要先登錄的Google應用邀請,因此我需要用戶保持登錄狀態,這就是爲什麼我不會撥打GIDSignIn.sharedInstance().signOut()
。如果我剛剛在登錄後調用我的邀請方法,它將按預期打開邀請對話框,但是我遇到的問題僅在我的應用重新啓動並且GIDSignIn.sharedInstance().hasAuthInKeychain()
始終爲false時纔會發生。所以我的問題是:在應用程序從內存中釋放並在以後使用時,是否可以在鑰匙串中保留auth。如果不是真的讓我困惑的是signInSilently()
這種看起來完全沒有意義的方法