迁移至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
相关产品推荐
相关产品推荐

