在阅读各种Stackoverflow帖子和各种文档(包括http://code.google.com/p/google-api-java-client/网站上的一些文档)后,我感到非常困惑.那么有人可以向我解释实现以下目标的最佳方法:
另一个令我困惑的地方 - 我能够使用AccountManager批准我的应用程序并从中获取身份验证令牌,但它不适用于Google阅读器.那么如何平衡AccountManager和OAuth的账户信息呢?我在AccountManager设置中获得用户批准后,是否仍需要对OAuth执行任何操作?
代码示例会很好但我看起来更清楚地解释了所有这些部分是如何相互关联的
每个帐户的帐户设置中都会显示一个图标.对于Google帐户,有一个图标,另一个用于Facebook.
有没有办法从应用程序中的代码中获取此图标?
我试图删除AccountManager中的自定义帐户.
这是我的代码:
final Handler handler = new Handler ();
AccountManagerCallback<Boolean> callback = new AccountManagerCallback<Boolean>()
{
@Override
public void run(AccountManagerFuture<Boolean> arg0)
{
String test = "test";
}
};
AccountManagerFuture<Boolean> bool = am.removeAccount(account, callback, handler);
Run Code Online (Sandbox Code Playgroud)
我正在使用的权限:
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS"></uses-permission>
<uses-permission android:name="android.permission.GET_ACCOUNTS"></uses-permission>
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS"></uses-permission>
<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS"></uses-permission>
Run Code Online (Sandbox Code Playgroud)
永远不会删除该帐户,并且从未调用回调,任何想法?日志中没有痕迹
我想问一下,通过手机配置的Google帐户验证用户身份的最佳方法是什么.我首先查看了ClientLogin,但这不是我想要的,因为它要求用户在我的应用程序中输入登录名/密码.我可以用OAuth来做,但在那里我应该要求用户在浏览器中输入他的凭据,这也是不可取的.我想使用AccountManager(我发现它包含方法getPassword对于特定的帐户但它对我不起作用),如果可以以某种方式使用AccountManager + ClientLogin或AccountManager + OAuth请告诉我.结果我希望能够使用用户的Google帐户登录而无需询问他的登录名/密码(当然在Android设备上有确认)我不确定是否可行,但如果有某种方法可以实现这一点,请指出我的方法. ..
我正在开发一个基于Twitter的应用程序,我正在尝试将Android内置的帐户支持纳入Twitter.以下代码用于弹出我的应用程序的确认对话框以访问twitter,但我不确定要传递什么作为authenticationType.任何帮助,将不胜感激.我在各地搜索过,似乎无法找到正确的答案.它取代了下面的"oauth".
AccountManager am = AccountManager.get(this);
Account[] accts = am.getAccountsByType(TWITTER_ACCOUNT_TYPE);
if(accts.length > 0) {
Account acct = accts[0];
am.getAuthToken(acct, "oauth"/*what goes here*/, null, this, new AccountManagerCallback<Bundle>() {
@Override
public void run(AccountManagerFuture<Bundle> arg0) {
try {
Bundle b = arg0.getResult();
Log.e("TrendDroid", "THIS AUTHTOKEN: " + b.getString(AccountManager.KEY_AUTHTOKEN));
} catch (Exception e) {
Log.e("TrendDroid", "EXCEPTION@AUTHTOKEN");
}
}}, null);
}
Run Code Online (Sandbox Code Playgroud) 我正在使用内置帐户系统(使用AccountManager API)为Android应用程序实现登录系统.
在Android 2.2+上一切都很好,但在Android 2.1上不包括SyncAdapter导致在帐户设置屏幕中重新启动(请参阅http://code.google.com/p/android/issues/detail?id=5009和AccountManager没有SyncAdapter?)
为了解决这个问题,我实现了一个存根SyncAdapter,它只是null从中返回IBinder onBind(Intent intent),并将相关内容添加到清单中.这解决了Android 2.1上的重启问题.
然而,它引入了另一个问题:添加帐户后,Android系统稍后会启动帐户同步.虽然没有发生错误(事实上我的SyncAdapter什么都不做,但除非通过返回null,否则无法导致错误),同步图标仍然卡在顶部的通知栏中.这导致Android同步系统保持永久唤醒锁定,防止设备休眠.
该帐户未在帐户设置屏幕中列出任何可同步组件(在"数据和同步"标题下),并且始终在帐户列表中显示"同步已关闭"同步状态(即使同步图标在通知栏).禁用帐户同步不会消除此问题.删除帐户可以解决问题.
我的猜测是我不应该返回null.我应该返回ThreadedSyncAdapter的基本实现吗?任何帮助获得帐户系统没有关联同步在2.1和2.2+上正常工作非常感谢.
android user-accounts accountmanager android-syncadapter android-wake-lock
这个很好的教程非常好地介绍了Android上的帐户身份验证,并通过使用Android来实现AccountManager.
但是,我需要使用承载令牌为OAuth2 API创建客户端应用程序以进行身份验证.在获得令牌时,我收到了它的到期时间戳,但我不清楚存储的位置以及如何正确使用它.问题是,如果我不想不必要地去服务器,应用程序会意识到,只有在请求任何随机资源时从服务器收到HTTP 401错误后,承载才会变为无效.那么,解决这个问题的最佳做法是什么:
invalidateAuthToken在捕获异常时重试.由于我是Android开发的新手,我希望解决方案也可能与我预期的完全不同.
如果它是相关的,我打算使用Volley进行服务器通信.
android accountmanager oauth-2.0 android-syncadapter android-volley
我正在尝试使用AccountManager来存储帐户信息并实现了一个身份验证器,但我一直遇到如下所示的异常会导致手机崩溃.与示例代码相比,这似乎是因为我没有(或特别想要)SyncAdapter和相关服务.在没有添加SyncAdapter的情况下使用AccountManager有诀窍吗?
问候
菲尔
I/AuthenticatorActivity( 8526): onAuthenticationResult(true)
I/AuthenticatorActivity( 8526): finishLogin()
W/dalvikvm( 8108): threadid=13: thread exiting with uncaught exception (group=0x
4001b170)
E/AndroidRuntime( 8108): Uncaught handler: thread android.server.ServerThread ex
iting due to uncaught exception
E/AndroidRuntime( 8108): *** EXCEPTION IN SYSTEM PROCESS. System will crash.
E/AndroidRuntime( 8108): java.lang.NullPointerException
E/AndroidRuntime( 8108): at com.android.settings.ManageAccountsSettings.o
nSyncStateUpdated(ManageAccountsSettings.java:187)
E/AndroidRuntime( 8108): at com.android.settings.ManageAccountsSettings.o
nAccountsUpdated(ManageAccountsSettings.java:244)
E/AndroidRuntime( 8108): at android.accounts.AccountManager$10.run(Accoun
tManager.java:826)
E/AndroidRuntime( 8108): at android.os.Handler.handleCallback(Handler.jav
a:587)
E/AndroidRuntime( 8108): at android.os.Handler.dispatchMessage(Handler.ja
va:92)
E/AndroidRuntime( 8108): at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime( 8108): at com.android.server.ServerThread.run(SystemSer
ver.java:435)
Run Code Online (Sandbox Code Playgroud)