标签: accountmanager

我应该如何使用Android AccountManager?

我在Android SDK中看过AccountManager,它用于存储帐户信息.因此,我找不到任何关于其目的的一般性讨论.有谁知道有关AccountManager背后的意图以及它为您购买的内容的任何有用的讨论?对于哪种类型的账户适合的任何意见?这是您将用户的帐户信息用于一般Web服务的位置吗?

android accountmanager

147
推荐指数
4
解决办法
6万
查看次数

Android AccountManager不应该在每个应用程序/ UID基础上存储OAuth令牌吗?

Android的AccountManager似乎为具有不同UID的应用程序获取相同的缓存身份验证令牌 - 这是安全的吗?它似乎与OAuth2不兼容,因为不应该在不同的客户端之间共享访问令牌.

背景/上下文

I am building an Android app which uses OAuth2 for authentication/authorization of REST API requests to my server, which is an OAuth2 provider. Since the app is the "official" app (as opposed to a 3rd-party app), it is considered a trusted OAuth2 client, so I am using the resource owner password flow for obtaining an OAuth2 token: the user (the resource owner) enters his username/password into the app, which then sends its client ID and client …

security authentication android oauth accountmanager

58
推荐指数
1
解决办法
9994
查看次数

Android登录 - 帐户身份验证器与手动身份验证

我即将在我的应用程序中实现登录以及用户身份验证.

我的第一个想法是手动完成,向服务器注册用户名和密码,获取身份验证令牌,保存并在后续请求中使用它.

谷歌搜索后,我认为在Android上正确的方法是使用帐户身份验证器.我已经看到了一些它的实现的例子,但是我不明白这样做的好处呢?是因为我可以存储多个帐户吗?是因为同步问题吗?如果有人能向我解释,我会很感激.它可能会让我更好地理解它的代码以及它为什么会这样做.

authentication android login accountmanager

37
推荐指数
2
解决办法
2万
查看次数

来自Android客户端的AccountManager的AuthToken不再工作

我很生气.我正在尝试使用Java中的Google App Engine作为服务器,为Android构建一个基于回合制的多人在线游戏.

它们看起来非常合适.Android需要一个Google帐户,GAE使用Google帐户进行身份验证,同时具有免费和可扩展性.

因此,在假期之前,我可以使用Android 2.0中的新AccountManager API从我的Android客户端获取我的GAE应用程序的身份验证.以下代码允许您访问用户Google帐户的AuthToken,然后将其用于身份验证,以便用户无需手动输入其帐户用户名和密码:

   AccountManager mgr = AccountManager.get(this); 
   Account[] accts = mgr.getAccountsByType("com.google"); 
   Account acct = accts[0];
   AccountManagerFuture<Bundle> accountManagerFuture = mgr.getAuthToken(acct, "ah", null, this, null, null);
   Bundle authTokenBundle = accountManagerFuture.getResult(); 
   String authToken = authTokenBundle.get(AccountManager.KEY_AUTHTOKEN).toString();
Run Code Online (Sandbox Code Playgroud)

然后我能够将生成的AuthToken字符串附加到适当的URL并获得一个有效的cookie,然后我可以将其用于所有进一步的请求.唯一的问题是,上周的某个时候它刚刚停止为我工作.现在当我尝试使用上面代码中的AuthToken时,我没有返回cookie并且我的代码为丢失的cookie抛出了NullPointerException.

当我回到过去的方式时,当用户手动输入他们的Google用户名和密码并且我从" https://www.google.com/accounts/ClientLogin " 获得AuthToken时,它运行正常.

请告诉我有人使用用户手机上的Google帐户使用AuthToken为Google App Engine应用构建了一个Android客户端,并告诉我一些为什么不再有效的线索.

我真的很想做这个工作.我的替代方案是要求用户输入他们的凭证(这是笨重的,他们不应该做的),或者与服务器的另一个解决方案一起使用.

提前致谢.

authentication google-app-engine android accountmanager

36
推荐指数
1
解决办法
2万
查看次数

从现有帐户服务类型创建电子邮件帐户

我已经浏览了Android doc提供的SampleSyncAdapter示例项目,但据我了解,我们需要添加一个自定义帐户服务帐户. 但我需要从设备上的现有帐户服务创建电子邮件帐户.


为了更清楚我的问题,我举了一个例子

以下是我的设备上可用的帐户服务 在此输入图像描述

我想每个Android设备上都提供"Google"和"电子邮件"帐户服务.

现在我想配置一个"电子邮件"帐户,因此我必须遵循以下步骤:

第1步:输入现有的电子邮件ID和密码

第2步:[a]常规设置属性: - (帐户名称,真实姓名,电子邮件地址)

步骤2:[b]传入服务器属性: - (POP或IMAP邮件服务器,服务器地址,用户名,密码)

第2步:[c]发送服务器属性: - (SMTP服务器,用户名,密码)

步骤3:通过选择高级设置,我们可以配置端口和证书选项.

我们需要手动完成上述步骤, 但我想通过上述所有设置以编程方式创建电子邮件帐户.


那么如何从现有的帐户服务中逐步创建新的电子邮件帐户?我需要MDM的这个功能.

android google-account accountmanager

34
推荐指数
1
解决办法
1384
查看次数

Web服务凭证 - OpenID/Android AccountManager?

我正在建立一个网络服务,并希望使用用户的谷歌帐户凭据.

该服务在GAE上运行,并将具有Web客户端和Android本机客户端.

这是我第一次尝试这样的东西,我一直在阅读有关OpenID和Android AccountManager库的内容.

我仍然不确定在我的数据存储区中存储用户有哪些选择.我应该使用什么标识符?是否可以在原生Android应用程序上使用OpenID?

任何帮助和/或指针将不胜感激.谢谢.

openid android accountmanager google-cloud-datastore

30
推荐指数
2
解决办法
1万
查看次数

如何在Android手机上检索登录的Google帐户?

我正在开发Android应用程序,我需要检索手机上使用的Google帐户.我想为C2DM做这个,但我不想让用户输入他/她的谷歌电子邮件帐户,如果他们已经登录.有什么办法吗?

android accountmanager

22
推荐指数
1
解决办法
2万
查看次数

在Android中使用AccountManager的好教程?

有没有人知道在android中使用AccountManager的任何好教程,基本上我正在尝试做的是请求一个OAuth2令牌与谷歌api一起使用,任何建议将不胜感激:)

java android oauth accountmanager oauth-2.0

22
推荐指数
1
解决办法
3万
查看次数

如何从ASyncTask调用父活动功能?

setAccountAuthenticatorResult可以从Activity中调用,它可以扩展AccountAuthenticatorActivity.我的活动扩展了,但是启动了ASyncTask,因此setAccountAuthenticatorResult应该从ASyncTask调用(或者,ASyncTask的结果应该传递回主线程).

怎么做?

下面的代码有什么问题?

AsyncTask<Uri, Void, Bundle> task = new RetrieveAccessTokenTask(this, consumer, provider, prefs).execute(uri);

public class RetrieveAccessTokenTask extends AsyncTask<Uri, Void, Bundle> {
    private Context context;

    public RetrieveAccessTokenTask(Context context, OAuthConsumer consumer,
            OAuthProvider provider, SharedPreferences prefs) {
        this.context = context;
    }

    @Override
    protected void onPostExecute(Bundle result) {
        context.setAccountAuthenticatorResult(); // doesn't work

    }
Run Code Online (Sandbox Code Playgroud)

android accountmanager android-asynctask

19
推荐指数
1
解决办法
4万
查看次数

自定义帐户验证器.从设备中删除帐户后清理

有没有办法获得某种通知/广播/等.从"帐户和同步设置"中删除自定义帐户时?

我拥有的应用程序可以为设备上的多个用户提供便利(这是企业用途)并使用单个SQLite数据库.假设我在设备上为我的应用程序创建多个用户,并使用仅与这两个用户相关的数据填充数据库.我的问题是,如果其中一个用户从"帐户和同步设置"中删除,我无法清理SD卡上的数据库和/或某些外部文件.

我可以在冗余表中复制用户信息,并将其与注册帐户进行比较,然后如果表中的用户信息与AccountManager中的Account []数组不匹配,则从数据库中删除用户数据.感觉脏了我.

android accountmanager

18
推荐指数
1
解决办法
5286
查看次数