使用twitter4j的Android Twitter xAuth示例

6

Android:我正在尝试使用以下 xAuth 示例进行 Android 分享。

如何在 Android 中实现 Twitter 分享的 xAuth 认证?

System.setProperty("twitter4j.oauth.consumerKey", "your token");
System.setProperty("twitter4j.oauth.consumerSecret", "your token secret");

Twitter twitter = new TwitterFactory().getInstance(login, password);

AccessToken accessToken = twitter.getOAuthAccessToken();
//Then you must save your Token and Token secret from AccesToken

if (mAccessToken != null) {
    if (mAccessToken.getToken() != null && mAccessToken.getTokenSecret() != null) {
        saveAccessToken(mAccessToken.getToken(), mAccessToken.getTokenSecret());
    }
}

我遇到了IllegalStateException异常

异常信息: java.lang.IllegalStateException: 未提供OAuth消费者密钥/密钥组合

出现在以下行:

AccessToken accessToken = twitter.getOAuthAccessToken();

我做了一些类似以下的更改

Twitter twitter = new TwitterFactory().getInstance("login", "pass");
            twitter.setOAuthConsumer(getString(R.string.twtAPIKey), getString(R.string.twtSecret));
            AccessToken mAccessToken = twitter.getOAuthAccessToken();

我又遇到了异常:

异常信息:java.lang.IllegalStateException: Basic authenticated instance.

有关于xAuth的可行示例吗?


你确定你的consumerKey和consumerSecret是正确的吗?另外,我不认为这会引起这样的异常,但他们是否在Twitter上为你的应用启用了XAuth? - DonSteep
2个回答

5

我使用了以下代码:


ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();

     configurationBuilder.setOAuthConsumerKey(Consumer__Key);
     configurationBuilder.setOAuthConsumerSecret(Consumer_Secret);
     Configuration configuration = configurationBuilder.build();

     Twitter twitter = new TwitterFactory(configuration).getInstance("username","password"); 

     AccessToken token = twitter.getOAuthAccessToken();
     System.out.println("Access Token " +token );

     String name = token.getScreenName();
     System.out.println("Screen Name" +name);

     PrintWriter out= response.getWriter();
     System.out.println(token);

使用xauth在Android应用程序中成功登录Twitter


1
我尝试了上面的代码,它给出了以下异常消息:“屏幕名称/密码组合似乎无效”。 - d-man
@Faisal Khan 你好,你在Twitter上启用了xAuth的密钥吗?这可能是错误的原因。 - success_anil
是的,我们需要向 Twitter 的相关人员请求特殊的 xauth 账户和密钥。 - d-man

2

Twitter4j的2.2.2版本有轻微更改。以下是更新内容:

Configuration configuration = new ConfigurationBuilder()
.setOAuthConsumerKey("your_customer_key")
.setOAuthConsumerSecret("your_customer_secret")
.build();

Twitter twitter = new TwitterFactory(configuration).getInstance(new BasicAuthorization(username, password)); // yes, use "BasicAuthorization" although that seems strange

AccessToken token = twitter.getOAuthAccessToken();
Log.d(TAG, "Access token: " + token.getToken());
Log.d(TAG, "Access token secret: " + token.getTokenSecret());

请记住,在使用此功能之前,您的 Twitter 客户端应用程序需要获得xAuth 授权


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接