禁用第三方应用对帐户管理员帐户的静默访问权限

时间:2013-08-30 18:59:35

标签: android security accountmanager android-account

您好我有一个与Android的客户经理相关的问题。 我的应用程序将一个帐户注入其中,因此也可以通过设备上安装的其他应用程序访问它。我认为,一旦任何应用程序要求系统存储在帐户中的数据,它应首先询问用户(经典的android身份验证屏幕,有两个按钮告诉用户应用程序想要访问该帐户)。 但是,我现在尝试了,我写了一个简单的应用程序,目的只是从客户经理填充存储的身份验证令牌。有效。它工作得很好,除了没有任何步骤要求用户许可,它只显示令牌。 请问我如何将帐户配置为不公开?

以下是我用于访问帐户的代码。我只使用了帐户的类型和令牌的类型。多数民众赞成。

  AccountManager accountManager = AccountManager.get(this);
    assert accountManager != null;
    Account[] kosAccounts = accountManager.getAccountsByType("account_type");
    if(kosAccounts.length < 1) tokenView.setText("no account");
    else{
        accountManager.getAuthToken(kosAccounts[0],"token_type",null, this, new AccountManagerCallback<Bundle>() {
            @Override
            public void run(AccountManagerFuture<Bundle> future) {
                try {
                    Bundle result = future.getResult();
                    if(result == null) tokenView.setText("problem");
                    else{
                        tokenView.setText(result.getString(AccountManager.KEY_AUTHTOKEN));
                    }

                } catch (OperationCanceledException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                } catch (AuthenticatorException e) {
                    e.printStackTrace();
                }

            }
        }, new Handler());
    }

这是我用来创建帐户的代码(来自另一个应用程序).​​.它实际上是剥离了代码的版本,我删除了你不需要帮助我的所有杂乱信息:)

final AccountManager accountManager = AccountManager.get(getApplicationContext());
final String username = getUserDataResponse.getString("username");
final String authToken = getUserDataResponse.getString("token"); // null pointer
final Account account = new Account(username, AuthenticatorConfig.ACCOUNT_TYPE);

accountManager.addAccountExplicitly(account, null, null);
accountManager.setAuthToken(account, AuthenticatorConfig.AUTH_TOKEN_TYPE, authToken);

1 个答案:

答案 0 :(得分:1)

好的,答案很简单..证书很重要!如果这些应用程序使用不同的证书签名,则会出现屏幕。 enter image description here