restorePreviousSignIn() 在使用 GIDSignIn-iOS SDK V6.0.2 到期时不会获取新的 idToken

问题描述 投票:0回答:1

我已经在我的 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 {
    
    }
}
ios google-oauth google-signin gidsignin
1个回答
0
投票

试试这个:

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()
        }
    }
}

© www.soinside.com 2019 - 2024. All rights reserved.