首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AccountManager.confirmCredentials问题

AccountManager.confirmCredentials问题
EN

Stack Overflow用户
提问于 2019-07-31 10:38:01
回答 2查看 375关注 0票数 6

我试图在我的应用程序中使用AccountManager.confirmCredentials方法进行用户验证。我就是这么用的:

代码语言:javascript
复制
    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授权表单中提议的帐户名,并使用自己的帐号。结果将是正的,并且无法验证所请求的帐户名是否用于确认,因为got包只有时间戳和所产生的布尔值。换句话说,包没有KEY_ACCOUNT_NAME字段,但是,与它应该提供的引用相对应。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-27 20:54:59

它已经被谷歌修复了。现在,在没有代码更改的情况下,它可以像预期的那样工作。

票数 0
EN

Stack Overflow用户

发布于 2019-08-08 20:29:37

根据文件:

如果未指定活动或密码,则返回的绑定包含KEY_INTENT,其目的是启动密码提示。此外,返回的绑定可能包含KEY_LAST_AUTHENTICATED_TIME,指示验证/创建凭据的最后一次时间。

如果您的结果不包含帐户名称,那么它必须是由于上述情况。您应该检查意图是否包含KEY_INTENT,如果包含了,则启动该意图来验证。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57288845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档