API 21上的AccountManager getAuthToken SecurityException(工作超过23个)

时间:2018-07-06 13:52:37

标签: android accountmanager

我正在尝试将AccountManager.getAuthToken()与我自己的身份验证器一起使用(但在具有不同签名的其他应用程序中)。我知道我需要权限GET_ACCOUNTSUSE_CREDENTIALS。这些已添加并且可以正常工作。

但是当我第一次通过getAuthToken()变量调用getAuthToken()时遇到问题,该变量使用activity参数显示一个对话框,要求用户授予访问权限身份验证者(GrantCredentialsPermissionActivity)。

这在API 26+上正常工作。显示对话框,在授予访问权限后,我得到一个令牌。

但是这在API 21-26上不起作用。在这里,没有显示对话框,并且无法获取result的{​​{1}}的{​​{1}}并显示logcat:

  

java.lang.SecurityException:以KEY_INTENT开始的活动必须共享Authenticator的签名

在API 24上,该消息有更多细节:

  

java.lang.SecurityException:KEY_INTENT解析为与提供的身份验证器(my.package.name)不共享签名的程序包(android)中的活动(android.accounts.GrantCredentialsPermissionActivity)。


但是,将getAuthToken()变量与布尔值OperationCanceledException而不是getAuthToken()一起使用时,会显示一条通知,该通知会触发“访问请求”对话框。并且在授予之后,可以获得令牌。


所以看起来有点奇怪。提到的对话框来自系统,而不是我的身份验证器而不是调用应用程序。在用户通过此对话框授予对身份验证器的访问权之前,甚至不会调用该身份验证器。

我认为这是类似Android AccountManager's getAuthToken SecurityException的问题,但没有答案。


这是我正在谈论的对话框(取自http://blog.udinic.com/2013/04/24/write-your-own-android-authenticator):

enter image description here

0 个答案:

没有答案