API Twitter не принимает URL-адрес обратного вызова для приложения Android - PullRequest
6 голосов
/ 28 мая 2011

Я загрузил приложение для Android OAuthDemo с www.marakana.com. Он отлично работает с включенным ключом / секретным и обратным вызовом. Я прочитал в Twitter OAuth API и зарегистрировал приложение типа браузера для своего кода Android и установил URL обратного вызова на www.mysite.com, прочитал и написал общий доступ и получил свой ключ / секрет.

Однако, когда я заменяю ключ / секрет из оригинального OAuthDemo своим, я получаю ошибку аутентификации:

05-27 14:40:25.964: WARN/System.err(441):     oauth.signpost.exception.OAuthCommunicationException: Communication with the service provider failed: https://api.twitter.com/oauth/request_token
05-27 14:40:25.974: WARN/System.err(441):     at oauth.signpost.AbstractOAuthProvider.retrieveToken(AbstractOAuthProvider.java:214)
05-27 14:40:25.974: WARN/System.err(441):     at oauth.signpost.AbstractOAuthProvider.retrieveRequestToken(AbstractOAuthProvider.java:69)
05-27 14:40:25.974: WARN/System.err(441):     at com.marakana.oauth.MainActivity$OAuthAuthorizeTask.doInBackground(MainActivity.java:116)
05-27 14:40:25.974: WARN/System.err(441):     at com.marakana.oauth.MainActivity$OAuthAuthorizeTask.doInBackground(MainActivity.java:1)
05-27 14:40:25.974: WARN/System.err(441):     at android.os.AsyncTask$2.call(AsyncTask.java:252)
05-27 14:40:25.974: WARN/System.err(441):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
05-27 14:40:25.974: WARN/System.err(441):     at java.util.concurrent.FutureTask.run(FutureTask.java:137)
05-27 14:40:25.974: WARN/System.err(441):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1081)
05-27 14:40:25.974: WARN/System.err(441):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:574)
05-27 14:40:25.974: WARN/System.err(441):     at java.lang.Thread.run(Thread.java:1020)
05-27 14:40:25.984: WARN/System.err(441): Caused by: java.io.FileNotFoundException: https://api.twitter.com/oauth/request_token
05-27 14:40:25.984: WARN/System.err(441):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:532)
05-27 14:40:25.984: WARN/System.err(441):     at org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:283)
05-27 14:40:25.984: WARN/System.err(441):     at oauth.signpost.basic.HttpURLConnectionResponseAdapter.getContent(HttpURLConnectionResponseAdapter.java:18)
05-27 14:40:25.984: WARN/System.err(441):     at oauth.signpost.AbstractOAuthProvider.handleUnexpectedResponse(AbstractOAuthProvider.java:228)
05-27 14:40:25.984: WARN/System.err(441):     at oauth.signpost.AbstractOAuthProvider.retrieveToken(AbstractOAuthProvider.java:189)
05-27 14:40:25.984: WARN/System.err(441):     ... 9 more
05-27 14:40:29.113: WARN/InputManagerService(73): Starting input on non-focused client com.android.internal.view.IInputMethodClient$Stub$Proxy@408df318 (uid=10035 pid=441)
05-27 14:40:29.133: WARN/IInputConnectionWrapper(441): showStatusIcon on inactive InputConnection

Код находится здесь ... https://gist.github.com/996219

Я нашел эти соответствующие вопросы в Stackoverflow.com: 1. OAuth + Twitter на Android: обратный вызов не выполняется 2. oauth_callback на Android

и добрался до этой точки, где:

Значит ли это, что я могу ввести URL-адрес обратного вызова: www.mysite.com на сайте dev.twitter.com, а затем в своем коде Android введите oauth_callback_url = "myappname";

Я использую jtwitter, который требует схему, которая является частью URL. Как это должно выглядеть? Я попробовал:

private static final String OAUTH_CALLBACK_URL = "http://www.santiapps.com";
private static final String OAUTH_CALLBACK_SCHEME = OAUTH_CALLBACK_URL + "://callback";

но это тоже не сработало. Просьба помочь мне понять, где я делаю не так?

Ответы [ 4 ]

6 голосов
/ 07 августа 2011

У меня была такая же проблема. Я сделал захват пакета, так как я знал, что URL был хорош. Ответ от сервера был:

<?xml version="1.0" encoding="UTF-8"?>
<hash>
  <error>Desktop applications only support the oauth_callback value 'oob'</error>
  <request>/oauth/request_token</request>
</hash>

Для меня проблема заключалась в том, что тип приложения в настройках приложения Twitter должен был быть установлен на «Браузер». Проблема была в том, что твиттер изменил свой интерфейс и удалил тип приложения. Необходимо указать URL-адрес обратного вызова на странице настроек приложения, чтобы неявно переключить его на тип браузера.

4 голосов
/ 24 июля 2012

даже у меня была такая же проблема, но я решил ее, добавив "https://www.google.com" в поле CALLBACK_URL при регистрации моего приложения в твиттере. На самом деле я думаю, что предоставление valid-url делает приложение-браузер приложения, иначе оно остается рабочим столом-app ...

4 голосов
/ 29 мая 2011

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

1 голос
/ 14 июня 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...