5

您好,我在使用 JTwitter 功能对我的 Twitter 应用程序进行身份验证时遇到了困难。我总是收到“TwitterException”

这是我的方法

OAuthSignpostClient oauthClient = new OAuthSignpostClient(consumerKey, 
            privateKey, "oob");

a)我不知道“oob”值应该是什么,它是“callbackURL”,在我在 twitter 上的应用程序中它说"callBack URL: none" ,所以我尝试将"none","None"null where放在"oob"没有不同的结果。

然后剩下的就是样板

 Intent i = new Intent(Intent.ACTION_VIEW, 
    Uri.parse(oauthClient.authorizeUrl().toString()));
    startActivity(i);
    // get the pin
    String v = oauthClient.askUser("Please enter the verification PIN from Twitter");
    oauthClient.setAuthorizationCode(v);
    // Store the authorisation token details for future use
    String[] accessToken = oauthClient.getAccessToken();
    // Next time we can use new OAuthSignpostClient(OAUTH_KEY, OAUTH_SECRET, 
    //        accessToken[0], accessToken[1]) to avoid authenticating again.

    EditText twitterText = (EditText)findViewById(R.id.twitterText);
    twitterText.getText();

    // Make a Twitter object
    Twitter twitter = new Twitter(null, oauthClient);
    // Print Daniel Winterstein's status
    //System.out.println(twitter.getStatus("winterstein"));
    // Set my status
    twitter.setStatus(twitterText.getText());

在这一点上,我根本不确定如何使这项工作。希望我可以更详细地说,但这与身份验证有关。我在网上看到的东西没有帮助

4

3 回答 3

7

试试这个作为你的回调 url

OAuthSignpostClient oauthClient = 
    new OAuthSignpostClient(consumerKey, privateKey, "callback://twitter");  

记住!后:

    startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl)));

请执行下列操作

覆盖 onResume()获取验证码

protected void onResume() {
    super.onResume();
    if (this.getIntent()!=null && this.getIntent().getData()!=null){
        Uri uri = this.getIntent().getData();
        if (uri != null && uri.toString().startsWith("callback://twitter")) {
            //Do whatever you want
            //usually use uri.getQueryParameter(someString);
            //test what could be someString using Log.v("",uri.toString());
            //you want the Authorization code which is a couple of numbers
            //so you could use oauthClient.setAuthorizationCode(v); 
            //and finally initialise Twitter
        }
    }
}

您可以使用uri.getQueryParameterNames()来获取参数String名称。


@BobVork

我想补充一点,您需要在“设置”选项卡中为您的 Twitter 应用程序(在 twitter.com 上)设置一个回调 URL。

您在该字段中输入的内容甚至都没有关系,但如果它为空,则回调 url 将不起作用。

于 2011-08-09T07:43:21.050 回答
1

我不确定这是问题所在,但您似乎从未为 twitter 对象设置用户名。

于 2011-08-05T20:57:44.630 回答
1

好吧,我不知道 Jtwitter API 的情况如何,而且我目前还没有足够的 Java 知识来真正理解这段代码的内部工作原理,但是您是否尝试过,而不是NULLor None,而是尝试?。这是从 Javascript 进行调用时与 restful API 一起使用的回调。试试看。

于 2011-08-08T05:14:37.630 回答