0

Мне нужно реализовать логин OAuth в приложении для Android с помощью API Twitter. Я нашел отличный проект на GitHub (spring-android-samples) с очень хорошим примером, но у меня проблема с параметром «URL обратного вызова».Spring Android Twitter Обратный звонок

Когда я представляю свой логин и пароль, мой андроид приложение открывает экземпляр браузера (с обратным вызовом URL), а не обработками ответа в фоновом режиме:

enter image description here

Кто-нибудь должен был реализовать что-то подобное и может мне помочь? Спасибо!

ответ

3

Вам не нужно регистрировать URL-адрес x-android-org-springsource-twitterclient://twitter-oauth-response с настройками приложения Twitter. Фактически, URL-адрес обратного вызова, настроенный в Twitter, в данном случае не имеет особого значения. URL-адрес обратного вызова отправляется в Twitter в запросе для получения маркера запроса OAuth.

Обратите внимание, что в пределах AndroidManifest.xml указан <intent-filter> для TwitterWebOAuthActivity, который настраивает этот URL обратного вызова. Этот фильтр сообщает Android о перенаправлении запросов на активность.

<activity 
    android:name=".TwitterWebOAuthActivity" 
    android:excludeFromRecents="true" 
    android:noHistory="true" > 
    <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:host="twitter-oauth-response" 
      android:scheme="x-org-springsource-android-twitterclient" /> 
    </intent-filter> 
</activity> 

Отметим также, в res/values/connect_settings.xmltwitter_oauth_callback_url строка снова настроена.

<string name="twitter_oauth_callback_url">x-org-springsource-android-twitterclient://twitter-oauth-response</string> 

Эта строка используется в TwitterWebOAuthActivity для извлечения маркера запроса Twitter.

@Override 
protected OAuthToken doInBackground(Void... params) { 
    // Fetch a one time use Request Token from Twitter 
    return connectionFactory.getOAuthOperations().fetchRequestToken(getOAuthCallbackUrl(), null); 
} 

Если вы хотите изменить URL обратного вызова для вашего собственного приложения, вам необходимо убедиться, что он настроен так же в AndroidManifest.xml и res/values/connect_settings.xml.

Смежные вопросы