Прежде всего, позвольте мне описать, что у меня работает ...
(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 вместо того, чтобы вернуться к своей деятельности.