通过Android的AccountManager类进行Twitter身份验证

Rob*_*ond 9 twitter android accountmanager twitter-oauth

我正在开发一个基于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)

A. *_*ier 8

如果你想要OAuth,你应该使用那些:

  • com.twitter.android.oauth.token
  • com.twitter.android.oauth.token.secret

如果您想要用户的密码,那么您可以编写自己的验证器.官方Twitter应用程序不存储密码.密码仅使用一次才能获得这两个令牌.

  • @PedroFraca,在我测试Android的AccountManager Twitter令牌时,只能与Twitter的官方消费者密钥和秘密(它们在那里......)一起工作.如果不使用Twitter的凭据,您必须使用WebView授权流程,并让用户在您的应用程序中输入结果.我在这里有一个完全开源的解决方案:https://github.com/OpenWatch/OpenWatch-Android/blob/twitter/OpenWatch/src/org/ale/openwatch/twitter/TwitterUtils.java (2认同)