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

迁移至AuthorizationClient API后,如何实现账号退出登录切换账号?

迁移至AuthorizationClient API后的账号退出及重新选择账号方案

核心思路

AuthorizationClient API依赖Google Play服务的账号管理体系,退出账号和重置授权状态需要结合CredentialManager处理本地凭证,同时通过请求参数强制触发账号选择对话框。

具体实现步骤

1. 清除已保存的授权凭证

使用CredentialManager删除本地存储的Google授权凭证,实现“退出账号”的核心逻辑:

val credentialManager = CredentialManager.create(context)
val deleteRequest = DeleteCredentialRequest.Builder()
    .setCredentialType(GoogleIdTokenCredential.TYPE_GOOGLE_ID_TOKEN_CREDENTIAL)
    .build()

try {
    credentialManager.deleteCredential(deleteRequest)
} catch (e: Exception) {
    // 处理凭证删除失败的异常情况
}

2. 强制弹出账号选择对话框

在构建授权请求时,添加两个关键参数确保每次调用都显示账号选择界面:

val googleIdTokenOption = GoogleIdTokenOption.Builder()
    .setFilterByAuthorizedAccounts(false) // 不限制仅显示已授权账号
    .setForceChooseAccount(true) // 强制触发账号选择弹窗
    .setServerClientId(YOUR_SERVER_CLIENT_ID) // 替换为你的客户端ID
    .build()

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

3. 额外清除账号授权状态(可选)

如果上述方法仍未生效,可以通过AccountManager清除Google账号的全局授权缓存:

val accountManager = AccountManager.get(context)
val googleAccounts = accountManager.getAccountsByType("com.google")
googleAccounts.forEach { account ->
    accountManager.invalidateAuthToken("com.google", null)
}

关键说明

AuthorizationClient API没有提供像GoogleSignInClient.signOut()那样的直接退出方法,其设计更依赖系统级的凭证管理机制。通过清除本地凭证+强制账号选择的组合操作,即可实现原有的切换账号需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 17:34:51