gpt4 book ai didi

android - AccountManager.confirmCredentials 问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:18:56 26 4
gpt4 key购买 nike

我正在尝试使用 AccountManager.confirmCredentials我的应用程序中的用户验证方法。我是这样使用它的:

    AccountManager am = AccountManager.get(ctx);
am.confirmCredentials(account, null, ctx, new AccountManagerCallback<Bundle>() {
@Override
public void run(AccountManagerFuture<Bundle> amf) {
try {
Bundle b = amf.getResult();
boolean r = b.getBoolean(AccountManager.KEY_BOOLEAN_RESULT);
vc.onValidateResult(r);
return;
} catch (OperationCanceledException ignore) {
} catch (AuthenticatorException ignore) {
} catch (IOException ignore) {
}
vc.onValidateResult(false);
}
}, null);

但发现自 Android 5 以来其实现存在差距。用户可以清除 Google 授权表单中建议的帐户名称并使用他/她自己的帐户名称。结果将是肯定的,并且无法验证请求的帐户名是否用于确认,因为获取的包只有时间戳和结果 bool 值。换句话说,该 bundle 没有 KEY_ACCOUNT_NAME 字段,但是根据它应该有的引用。

有人知道如何解决此漏洞吗?

最佳答案

根据文档:

If no activity or password was specified, the returned Bundle contains KEY_INTENT with the Intent needed to launch the password prompt. Also the returning Bundle may contain KEY_LAST_AUTHENTICATED_TIME indicating the last time the credential was validated/created.

如果您的结果不包含帐户名称,则一定是由于上述情况。您应该检查 Intent 是否包含 KEY_INTENT,如果包含则启动该 Intent 进行验证。

关于android - AccountManager.confirmCredentials 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57288845/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com