Не удалось получить успешную регистрацию в Twitter (используя библиотеку Twitter4J), чтобы перенаправить обратно в мое приложение для Android

Прежде всего, позвольте мне описать то, что я работаю...

(1) Я зарегистрировал свое приложение на сайте разработчиков Twitter и получил некоторые учетные данные OAuth (Consumer Key, Consumer Secret, URL токена запроса и т. Д.). Я попытался ввести URL обратного вызова здесь как "callback://tweeter" (и другие URL-адреса, отличные от Http), но проверка страницы не удалась, и я получил сообщение об ошибке "Неправильный формат URL", поэтому я оставил это поле пустым.

(2) Затем я настроил свои объекты 'CommonsHttpOAuthConsumer' и 'OAuthProvider' с моими учетными данными OAuth и пустым URL-адресом обратного вызова и запустил веб-операцию следующим образом:

CommonsHttpOAuthConsumer consumer = new
CommonsHttpOAuthConsumer(myTwitterConsumerKey,
myTwitterConsumerSecret);
OAuthProvider provider = new
DefaultOAuthProvider(myTwitterRequestTokenUrl,
myTwitterAccessTokenUrl, myTwitterAuthorizeUrl);
String authUrl =
provider.retrieveRequestToken(consumer, "");
startActivity(new
Intent(Intent.ACTION_VIEW, Uri.parse(authUrl)));

(3) Затем я следил за веб-активностью, которая была запущена (из моего приложения) и вошел в мою учетную запись Twitter (и тем самым подтвердил, что я разрешаю приложению получать доступ к моей учетной записи Twitter).

(4) Наконец, отправив запрос, я был перенаправлен на страницу (все еще находящуюся в сети), поздравив меня с тем, что я предоставил своему приложению доступ к своей учетной записи в Твиттере, и дал мне пин-код для ввода в случае необходимости.

Теперь, конечно, мне хотелось бы, чтобы при успешной авторизации я перенаправлялся обратно в свое приложение (активность, которая запустила веб-активность) и обрабатывал там успешную авторизацию.

Я перепробовал множество вещей (пара описана ниже), но каждый раз терплю неудачу и застрял в идеях. Если кто-то может мне помочь и сообщить, что я делаю неправильно, я буду в долгу!

Вот две основные вещи, которые я попробовал:

(1) Я попытался установить URL обратного вызова в своем коде на "callback://tweeter" (несмотря на то, что он был пустым в настройках OAuth регистрации моего приложения в Twitter), но на этот раз, когда я выполняю следующий вызов метода...

provider.retrieveRequestToken(consumer, "callback://tweeter");

... создается исключение OAuthCommunicationException (содержащее сообщение: "Не удалось установить связь с поставщиком услуг...").

(2) Я попытался установить URL-адрес обратного вызова в настройке OAuth регистрации моего приложения на Twitter в качестве URL-адреса Http (например, "http://myhost.com") и указать фильтр намерений в манифесте активности для захвата обратного вызова следующим образом.,

<intent-filter>
<action android:name = "android.intent.action.VIEW" />
<category android:name ="android.intent.category.DEFAULT" />
<category android:name ="android.intent.category.BROWSABLE" />
<data android:scheme="http" android:host="myhost.com" />
</intent-filter>

... но после успешной авторизации я перенаправлен в веб-активности (интернет-браузере) на myhost.com, а не возвращаюсь к своей деятельности.

3 ответа

Решение

Рад, что вы нашли ответ в моем учебнике в Твиттере: http://www.anddev.org/advanced-tutorials-f21/sending-a-tweet-t54389.html

Для других людей:

Я указывал URL обратного вызова как "обратный вызов: // твитер" (2 косых черты), когда это должно было быть "обратный вызов: /// твитер" (то есть 3 косых черты).


Фактически, для упрощения это должен быть только "обратный вызов: ///", а узел данных фильтра намерений тогда просто:

 <data android:scheme="callback"/>

Я не рекомендовал бы такое упрощение, так как вы должны помнить, что если другое приложение также использует его, ваше приложение поднимет его, и весь ад разорвется!

У меня была такая же проблема. Что решило мою проблему, так это то, что при настройке фильтра намерений в манифесте убедитесь, что имя, которое вы используете в схеме android: схема, состоит из строчных букв без подчеркивания, хотя штрихи в порядке, например:

<data android:scheme="your-callback-here" />

Просто то, на что я наткнулся, как новый разработчик!

Вы могли бы вложить в перенаправление к вашему приложению

попробуйте решить эту проблему. Если вы неправильно указали URL-адрес обратного вызова, вы не сможете вернуться в свое приложение.

Вы должны поместить его в созданный в Твиттере URL-адрес обратного вызова приложения: http://twitter.com/oauth/authorize?oauth_token=actualtokenhere&oauth_callback=myapp:///

Надеюсь, у вас все получится:)

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