Android: обрабатывать обратный вызов OAuth с помощью фильтра намерений - PullRequest
11 голосов
/ 19 апреля 2010

Я создаю приложение для Android, которое требует OAuth. У меня есть все функции OAuth, кроме обработки обратного вызова от Yahoo. В моем AndroidManifest.xml есть следующее:

  <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:host="www.test.com" android:scheme="http"></data> 
  </intent-filter>

Где www.test.com будет заменен моим доменом. Кажется:

  • Этот фильтр срабатывает, когда я нажимаю на ссылку на странице.
  • Он не запускается при перенаправлении Yahoo, браузер открывает веб-сайт по адресу www.test.com
  • Это не срабатывает, когда я ввожу имя домена прямо в браузере.

Так может ли кто-нибудь помочь мне с

  • Когда именно этот фильтр намерений будет запущен?
  • Есть ли какие-либо изменения в фильтре намерений или разрешениях, которые расширят фильтр для применения к запросам перенаправления?
  • Какие-нибудь другие подходы, которые я мог бы использовать?

Спасибо за вашу помощь.

Ответы [ 2 ]

12 голосов
/ 20 апреля 2010

Таким образом, я изменил свой подход, чтобы использовать пользовательскую схему, а не веб-URL, и теперь все работает как положено.

Так что мой URL обратного вызова:
X: // Обратный вызов

и мой фильтр намерений:

<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="X"></data> 
</intent-filter>

где X - название схемы моего клиента.

0 голосов
/ 30 марта 2019

Для OAUTH, пожалуйста, убедитесь, что вы используете V2, потому что V1 скоро устареет.

 <intent-filter android:label="filter_react_native">
           <action android:name="android.intent.action.VIEW" />
           <category android:name="android.intent.category.DEFAULT"/>
           <category android:name="android.intent.category.BROWSABLE" />
           <data android:host="www.test.com" android:scheme="https"/>
     </intent-filter>

сгенерированный URI будет https://www.test.com

для

ниже пример намерения данных приложения

 <data android:host="people" android:scheme="peopleapp"/>

URI будет создан peopleapp://people

Пожалуйста, проверьте, используете ли вы роутер. Если да, то у вас должен быть экран людей в вашем стековом навигаторе.

Наконец

Лучший способ проверить ваши намерения: URI:

  1. Удалите существующее приложение, если оно еще не сделано.

  2. Синхронизируйте и соберите код снова.

  3. Вызовите веб-просмотр в вашем приложении с помощью URI peopleapp: //people.

  4. Должно работать.

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

  6. Запустите это в своем терминале (попробуйте adb devices для проверки).

    $ adb shell am start
         -W -a android.intent.action.VIEW
         -d <URI> <PACKAGE>
    
  7. URI будет peopleapp://people

  8. ПАКЕТ будет вашим пакетом / заявкой / именем, т.е. .. @string/app_name.

Надеюсь, это поможет вам.

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