URL-адрес обратного вызова Twitter для Android

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

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

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

1 ответ

Решение

Вам на самом деле не нужно регистрировать x-android-org-springsource-twitterclient://twitter-oauth-response URL с настройками приложения 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.xml twitter_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,

Другие вопросы по тегам