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

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

(1) Я зарегистрировал свое приложение на сайте разработчиков Twitter и получил некоторые учетные данные OAuth (Consumer Key, Consumer Secret, Request token 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) Наконецотправляя запрос, я был перенаправлен на страницу (все еще находящуюся в сети), поздравляя меня с тем, что я предоставил своему приложению доступ к своей учетной записи Twitter, и давая мне пин-код для ввода в случае необходимости.

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

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

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

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

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

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

(2) Я попытался установить URL-адрес обратного вызова вв настройках OAuth для регистрации в Твиттере моего приложения задан Http-URL (например, "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 ]

3 голосов
/ 23 декабря 2011

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

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

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


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

 <data android:scheme="callback"/>

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

2 голосов
/ 11 января 2013

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

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

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

0 голосов
/ 15 июня 2016

вы могли бы вставить перенаправление в ваше приложение

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

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

Надеюсь, это сработает:)

...