- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试使用 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/
当我们可以使用 Accountmanager.addAccountExplicitly() 创建包含所有参数的帐户时,为什么我们使用 Accountmanager.addAccount()。 我用谷歌
有什么区别- AccountManager accountManager = (AccountManager) context.getSystemService(Context.ACCOUNT_SER
我知道 AccountManager的 addOnAccountsUpdatedListener()可用于获取有关帐户列表更改的通知。如果发生此类事件,框架将调用提供的 OnAccountsUpdat
AccountManager 帐户存储在哪里?它在设备上吗?如果是,它存储在哪个文件夹中? 最佳答案 它存储在这里: Environment.getSystemSecureDirectory().ge
在 AccountManager 教程中 Remembering Your User ,建议: If there's more than one Account in the array, you s
我有一个应用程序正在实现我自己的身份验证器,如 this 中所述文章。它按预期工作正常。现在我需要从 AccountManager 获取谷歌帐户,我是这样做的: Account[] accounts
我尝试在我的应用程序中实现一个客户管理器,以避免用户每次打开应用程序时都必须登录。 所以基本上,我已经有了我的身份验证 Activity ,用户可以在其中放置其登录名和密码,以及我们从服务器接收 to
语境 我的应用程序只存储用户/通行证。不使用 token 。 问题 1 方法 setAccountAuthenticatorResult(Bundle) 和 onResult(Bundle) 旨在通知
Security tips与 AccountManager 相关的章节提到: If credentials are used only by applications that you create,
我正在尝试确定用户是否已添加该帐户,以防止在我的应用程序上多次添加同一帐户。我正在使用我自己的帐户验证器 Activity 。这是我的代码: public class AuthenticatorAct
我正在使用 custom class to expose some custom schema in Active Directory .我正在存储一个二进制 blob,根据项目要求,此数据必须存储在
我想使用他的 Google 帐户对我应用的用户进行身份验证,因为这是在多个设备上对用户进行身份验证的最简单方法。 我的问题是,如果我使用 AccountPicker.newChooseAccountI
我正在开发一个应用程序,它使用 AccountManager 获取 Google 帐户的凭据,该帐户随后用于从 AppEngine 获取 cookie。我注意到我在将应用程序发送给测试人员时发现了错误
我需要一些帮助来了解客户经理为我们提供的服务。我有一个需要 token 才能使用的 Web 服务。例如,如果开发人员想使用我的 api,他们会使用如下 url: http://myservice.co
我在 AccountManager 中保存了一个授权 token ,但是,当我执行 peekAuthToken(account, authTokenType) 时,它返回 null。我的调用者 uid
在文档中,android account manager blockingGetAuthToken 声明如果它的第三个参数notifyAuthFailure 为false,它会提示用户登录 Activ
我了解需要 AccountManager 的用途,并且稍微了解如何使用和实现它。但是,我还不知道我是否可以正确使用它,如果我不拥有它,甚至与我用来验证我的应用程序的服务相关联。我正在编写一个使用 RE
我一直在努力弄清楚如何使用 Google 客户经理为用户提供一种登录我的应用程序的方法。 我已返回 AuthToken,但我如何才能获得一些不会更改的帐户的唯一信息,例如 uniqueID 或其他信息
我正在创建两个应用程序。主应用程序包含一个登录名,用于创建自定义帐户。对于第二个应用程序,我想从主应用程序访问用户数据(刷新 token 存储在那里)。 主应用正在创建自定义帐户,刷新 token 通
我正在尝试获取 Google 帐户的授权 token ,因为我正在使用以下代码: AccountManager acoountManager = AccountManager.get( getCon
我是一名优秀的程序员,十分优秀!