Android Jtwitter, проблемы с аутентификацией

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

Вот мой метод

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

а) Я не знаю, что ДОЛЖНО быть значением "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 ответа

Решение

Попробуйте это как ваш 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());
            //u 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).

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

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

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

Другие вопросы по тегам