Android: отобразите веб-страницу и разрешите пользователю войти в систему, чтобы получить токен доступа к каналу.

Я пытаюсь написать приложение для Android для доступа и отображения подписок Feedly для пользователя.

Для этого мне нужно опубликовать URL-адрес Feedly API, а взамен отправить HTML-код для страницы входа.

Пример URL для публикации:

https://sandbox7.feedly.com/v3/auth/auth?client_id=sandbox&redirect_uri=http%3A%2F%2Flocalhost&scope=https://cloud.feedly.com/subscriptions&response_type=code

Здесь я использую http://localhost в качестве URI перенаправления, потому что я ничего не размещаю для этого приложения.

после входа пользователя Feedly API перенаправляет код на http://localhost.

Теперь у меня есть 2 проблемы: 1. Я не знаю, как отобразить веб-страницу для входа в систему на Android. Как я могу это сделать и позволить пользователю войти в систему? Какова наилучшая практика для такой цели? 2. Как я могу получить токен доступа, который отправляется обратно на URI перенаправления в качестве параметра?

для первого вопроса, возможно, я могу использовать веб-просмотр, как это было предложено в другом вопросе. Как отобразить веб-страницу в Android?

НО тогда как мне вернуть код в redirect_uri ?

Спасибо.


person yasin tavukcuoglu    schedule 18.03.2018    source источник


Ответы (1)


Я решил это, вызвав мобильный браузер с правильным URL-адресом:

String url = "http://cloud.feedly.com/v3/auth/auth?client_id=xxxx&redirect_uri=myownuri%3A%2F%2F&scope=https://cloud.feedly.com/subscriptions&response_type=code";
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
finish();

а затем получить перенаправленный URL-адрес, зарегистрировав пользовательский URI в файле манифеста:

<activity
    android:name=".BrowserActivity"
    android:label="Feedly Login" >
   <intent-filter>
        <data android:scheme="myownuri" />
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
    </intent-filter>
</activity>

затем я анализирую возвращенный параметр в своей деятельности:

Uri data = this.getIntent().getData();
if (data != null && data.isHierarchical()) {
    String url = this.getIntent().getDataString();
person yasin tavukcuoglu    schedule 29.03.2018