You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS中如何验证用户在账号安全中心取消授权后Google登录是否有效

Google登录授权有效性验证方案

原有方案失效原因

你之前使用的GIDSignIn.sharedInstance()?.currentUser != nil和hasPreviousSignIn()判断逻辑仅读取本地缓存的登录态,不会和Google服务端同步授权状态,因此用户在Google账号管理页撤权后,本地缓存不会自动更新,导致判断失效。

正确校验逻辑

  • 必须使用带回调的restorePreviousSignIn方法,通过服务端返回的结果判断授权状态,不能仅依赖本地缓存
  • 当回调返回指定错误码时,即可判定用户已取消授权或登录态已失效

代码示例

GIDSignIn.sharedInstance.restorePreviousSignIn { [weak self] user, error in
    // 存在错误时判定授权状态
    if let error = error as? NSError {
        switch error.code {
        case kGIDSignInErrorCodeCanceled.rawValue, 
             kGIDSignInErrorCodeHasNoAuthInKeychain.rawValue:
            // 用户已撤权,清除本地登录缓存
            GIDSignIn.sharedInstance.signOut()
            GIDSignIn.sharedInstance.disconnect()
            // 此处添加引导用户重新登录的逻辑
        default:
            // 其他错误按需处理
            break
        }
        return
    }
    // 校验通过,用户授权仍然有效,可正常使用user对象的信息
    guard let _ = user else {
        // 无有效用户信息,按授权失效处理
        return
    }
}

补充注意事项

  • 建议每次App冷启动、进入需要Google授权的功能页时都执行一次上述校验逻辑
  • 调用Google相关开放接口时如果返回401未授权状态,也需要触发上述校验逻辑同步授权状态

内容的提问来源于stack exchange,提问作者Vinoth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 03:36:03