【问题标题】:android get gmail username and password from account managerandroid从客户经理那里获取gmail用户名和密码
【发布时间】:2011-11-30 04:25:43
【问题描述】:

我正在为 Android 编写一个 GMail 客户端。我想在 ListView 中列出所有 GMail 帐户。当用户点击某一项时,我想让程序找回对应账号的密码。

但是,我得到了一个 SecurityException:

java.lang.SecurityException: caller uid 10107 is different than the authenticator's uid

这是我的代码:

AccountManager accountManager = AccountManager.get(context);

this.username = account.name;
this.password = accountManager.getPassword(account); //this is where I get the exception

我在 AndroidManifest.xml 中拥有所有这些权限:

<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS"></uses-permission>
<uses-permission android:name="android.permission.GET_ACCOUNTS"></uses-permission>
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS"></uses-permission>
<uses-permission android:name="android.permission.USE_CREDENTIALS"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>

根据Android reference,唯一需要的权限应该是MANAGE_ACCOUNTS。

我的代码有什么问题?

【问题讨论】:

    标签: android exception passwords accountmanager


    【解决方案1】:

    您可以获得身份验证令牌,但无法获得用户的实际凭据。实际的贷项只能由创建它们的应用程序访问。从 getPassword 方法的文档(强调我的):

    此方法要求调用者持有权限 AUTHENTICATE_ACCOUNTS 并具有与帐户的身份验证器相同的 UID

    【讨论】:

    • 很高兴知道这一点。我想我现在更安全了。谢谢库尔蒂斯。
    猜你喜欢
    • 2015-07-29
    • 1970-01-01
    • 2021-10-17
    • 1970-01-01
    • 1970-01-01
    • 2018-05-26
    • 1970-01-01
    • 2012-12-31
    • 1970-01-01
    相关资源
    最近更新 更多