首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AccountManager的getAuthToken SecurityException

AccountManager的getAuthToken SecurityException
EN

Stack Overflow用户
提问于 2015-05-07 13:47:53
回答 1查看 917关注 0票数 2

我(让我们说,应用程序'C‘)正试图通过安卓的AccountManager的getAuthToken功能来获得安装的应用程序(比方说'S’)的令牌。

此函数不按预期工作,它不返回任何结果(运行函数从未被调用)

代码语言:javascript
复制
 AccountManagerFuture<Bundle> future1 = AccountManager.get(Main2.this).getAuthToken(account,account.type,null,false, new AccountManagerCallback<Bundle>() {
                    @Override
                    public void run(AccountManagerFuture<Bundle> future) {
                        Bundle result = null;
                        try {
                            result =   future.getResult();
                            String check = "";
                        }
                        catch (OperationCanceledException e){          }
                        catch (IOException e1){}
                        catch (AuthenticatorException e2){}

                    }
                } , new Handler(Looper.getMainLooper()));

当我看到设备亚行日志时,我看到以下内容

代码语言:javascript
复制
 java.lang.SecurityException: Activity to be started with KEY_INTENT must share Authenticator's signatures
            at com.android.server.accounts.AccountManagerService$Session.onResult(AccountManagerService.java:2580)
            at com.android.server.accounts.AccountManagerService$6.onResult(AccountManagerService.java:1677)
            at com.android.server.accounts.AccountManagerService$6.onResult(AccountManagerService.java:1652)
            at android.accounts.IAccountAuthenticatorResponse$Stub.onTransact(IAccountAuthenticatorResponse.java:59)

上面描述的应用程序'C‘和'S’是不相关的,所以它们用不同的证书进行签名。

我猜这个函数应该在上面的场景中起作用(这是AccountManager的主要目的之一--在应用程序之间共享帐户访问令牌),还有一个安全对话框抛给用户,询问他是否应该允许'C‘访问'S’),原因是什么?我在这里有遗漏什么吗?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2015-06-23 11:36:12

  1. 首先,在app S中实现AbstractAuthenticator。查找getAuthToken()实现。检查作为KEY_INTENT返回的活动。它必须与身份验证器在同一个应用程序中(是的,有一些方法可以从另一个应用程序启动一个活动)。
  2. 请确保您在真正的设备上运行,因为在这种情况下,您必须看到“授予权限”android系统屏幕。
  3. 如果你来这里,我不知道还有别的原因,除了一些虫子。尝试完全删除两个应用程序并重新启动模拟器,然后检查问题是否仍然存在。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30103050

复制
相关文章

相似问题

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