2010-12-12 2 views
3

Эй. Я разрабатываю приложение, используя api Twitter4j. Чтобы разрешить приложение и получить токен доступа, я запускаю браузер с параметрами обратного вызова, которые я установил в файле манифеста.Oauth Callback не найден после разрешения приложения на Twitter

<data android:scheme="scheme" android:host="authenticatorapp"></data> 

После разрешения приложения браузер вызывает следующее сообщение об ошибке и не получает сообщение об ошибке. схема: // authenticatorapp? Oauth_token = n5vd99dfnmnf ...

Я попробовал это как на эмуляторе, так и на устройстве. В эмуляторе, LogCat дает мне это:

12-12 15: 04: 05,743: ERROR/браузер (230): onReceivedError -10 схема: // authenticatorapp oauth_token = Jj ... M & oauth_verifier = 3ZfuY ... Протокол не поддерживается.

- Файл манифеста:

<activity android:name=".AuthenticatorApp" 
     android:launchMode="singleInstance" 
     > 
     <intent-filter>   
      <category android:name="android.intent.action.VIEW" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <category android:name="android.intent.category.BROWSABLE" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
      <data android:scheme="scheme" android:host="authenticatorapp"></data>         
     </intent-filter>    
    </activity> 

    <!-- Broadcast Receiver that will process AppWidget updates --> 
    <receiver android:name=".ZaytungWidget" android:label="@string/widget_name"> 
     <intent-filter> 
      <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />        
     </intent-filter> 
     <meta-data android:name="android.appwidget.provider" 
      android:resource="@xml/tweet_metadata" /> 
    </receiver> 
    <!-- Service to perform web API queries --> 
    <service android:name=".ZaytungWidget$UpdateService" /> 
</application> 

<uses-sdk android:minSdkVersion="4" /> 
    <uses-permission android:name="android.permission.WRITE_SETTINGS" /> 
    <uses-permission android:name="android.permission.INTERNET" />  

ответ

3

Не могли бы вы разместить весь файл манифеста?

я нашел следующий вопрос, который может быть полезным в дальнейшем: OAuth instance state in Android

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

http://code.google.com/p/jpoco/source/browse/trunk/jpoco-android-app/AndroidManifest.xml

+0

Спасибо, я приложил файл манифеста, я не мог быть уверен, что у меня должно быть основное действие, например, так как я намереваюсь запустить его из виджета. –

+0

Ничего себе это сработало. Благодаря!

+0

@Orkun: Интересное решение: у меня есть вопрос только для подтверждения. Я правильно понимаю: у вас есть родное приложение и получение обратного вызова, так что пользователю не нужно вводить ни одного Twitter OAuth Pin, верно? Как ваше приложение в твиттере, когда вы его зарегистрировали, вы установили его как «Настольное приложение» или «Веб-приложение»? –

0

Если вы разрабатываете родное приложение, вы не используете параметры обратного вызова, но нужно, чтобы позволить пользователь вводит контакт в своем приложении где-нибудь - что он получает, когда вы открываете authorization_url в браузере или, возможно, более удобно в своем приложении в веб-просмотре.

Вы также можете автоматически извлекать контакт после того, как пользователь нажал «да» на веб-странице авторизации twitter, но не уверен, что это против твитер-ToS.

+0

Спасибо за помощь. –

1

Это то, что я имею в мой рабочий Manifest.xml, где org.gpsagenda.OAUTH - это действие, выполняющее проверку подлинности.

 <activity android:name="org.gpsagenda.OAUTH" > 
     <intent-filter> 
      <action android:name="android.intent.action.VIEW"></action> 
      <category android:name="android.intent.category.DEFAULT"></category> 
      <category android:name="android.intent.category.BROWSABLE"></category> 
      <data android:scheme="gpsagenda" android:host="twitt" /> 
     </intent-filter> 
    </activity> 
Смежные вопросы