我已经在我的 iOS 上实现了 Google 登录流程。 首次登录工作正常,但 1 小时后 Google 提供的 idToken 过期,调用 restorePreviousSignIn() 方法但返回相同的 idToken。有人可以发布 restorePreviousSignIn() 方法的实现
我的 restorePreviousSignIn() 方法如下所示-
GIDSignIn.sharedInstance.restorePreviousSignIn { user, error in
if error != nil || user == nil {
print("Could not sign in user previously.\nError: \(String(describing: error))")
}
else {
}
}
试试这个:
GIDSignIn.sharedInstance.restorePreviousSignIn { user, error in
if error != nil || user == nil {
// Prompt the user to sign in again
GIDSignIn.sharedInstance.signIn()
} else {
if let auth = user.authentication {
if auth.accessTokenExpirationDate.timeIntervalSinceNow < 0 {
// Access token has expired, refresh the token
auth.refreshToken { refreshedAuth, error in
if error != nil || refreshedAuth == nil {
// Refresh failed, prompt the user to sign in again
GIDSignIn.sharedInstance.signIn()
} else {
// Refresh succeeded, update the user's authentication object
user.authentication = refreshedAuth
// Use the refreshed idToken to authenticate the user
// Your code here
}
}
} else {
// Access token is still valid, use the existing idToken to authenticate the user
// Your code here
}
} else {
// Prompt the user to sign in again
GIDSignIn.sharedInstance.signIn()
}
}
}