Android Jtwitter, проблемы с аутентификацией - PullRequest
5 голосов
/ 22 июля 2011

Здравствуйте. У меня возникли проблемы с использованием функций JTwitter для аутентификации в приложении Twitter. Я всегда получаю «TwitterException»

Вот мой метод

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

a) Я не знаю, что ДОЛЖНО быть значением «oob», это «callbackURL», и в моем приложении в твиттере написано "callBack URL: none", поэтому я попытался поместить "none", "None" и null где "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());

на данный момент, я просто не уверен, как заставить это работать. Хотел бы я быть более многословным об этом, но это как-то связано с аутентификацией. Онлайн-вещи, которые я видел, не помогли

Ответы [ 3 ]

7 голосов
/ 09 августа 2011

Попробуйте это в качестве 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

Я просто хотел бы добавить, что вам понадобится установить URL-адрес обратного вызова на вкладке "Настройки" для вашего приложения Twitter (на twitter.com).

Не имеет значения, что вы положили в поле, но если оно пустое, обратные ссылки не будут работать.

1 голос
/ 08 августа 2011

Ну, я не знаю, как обстоят дела с Jtwitter API, и я не знаю достаточно Java на этом этапе, чтобы по-настоящему понять внутреннюю работу этого кода, но вы пробовали вместо NULL или None, чтобы попробовать ? вместо.Это обратный вызов, используемый с restful API при выполнении вызовов из Javascript.Попробуйте.

1 голос
/ 06 августа 2011

Я не уверен, что это проблема, но кажется, что вы никогда не устанавливали имя пользователя для объекта twitter.

...