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

Android端用Credential Manager获取Google Id Token如何避免请求用户个人信息?

解决方法
  • 核心是调整OAuth 2.0请求的Scope,移除profile和email,仅保留openid。默认的Google登录请求会包含这两个额外Scope,才会触发用户信息共享的弹窗。
  • 构建GetGoogleIdTokenOption时,明确指定仅使用openid Scope,同时按需配置其他参数:
val googleIdTokenOption = GetGoogleIdTokenOption.Builder()
    .setServerClientId(YOUR_GOOGLE_CLIENT_ID)
    .setFilterByAuthorizedAccounts(false) // 根据需求设置是否过滤已授权账户
    .setScopes(listOf("openid")) // 仅保留openid scope
    .build()

val getCredentialRequest = GetCredentialRequest.Builder()
    .addCredentialOption(googleIdTokenOption)
    .build()

CredentialManager.create(context).getCredential(getCredentialRequest, context, null)
    .addOnSuccessListener { credential ->
        val idTokenCredential = credential as GoogleIdTokenCredential
        val idToken = idTokenCredential.idToken
        // 解析idToken中的sub字段,该字段是用户的唯一永久标识,用于判断登录用户一致性
    }

补充说明

  • 仅使用openid Scope时,Google返回的ID Token仅包含核心标识字段(如sub、iss、aud),不会携带姓名、头像、邮箱等个人信息,因此弹窗不会再询问用户共享这类内容。
  • sub字段对同一个Google用户是全局唯一且永久不变的,完全满足你判断后续登录是否为同一用户的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 21:32:03