Как войти в систему OAuth 2.0 с помощью пользовательских вкладок Chrome (Fitbit API)

API Fitbit больше не поддерживает веб-просмотр.

Итак, я изучил пользовательские вкладки Chrome и применил их в своем приложении.

Но после входа в систему, когда я нажал эту розовую кнопку (кнопка разрешения), ничего не произошло (изображение ниже).

«Изображение

Как я могу получить токен доступа и сохранить его в приложении?

Помогите мне, пожалуйста.

Спасибо.


person Cloud    schedule 18.11.2015    source источник


Ответы (2)


При повторной авторизации через Fitbit API вам необходимо указать redirect_uri, куда пользователь попадет после входа в систему. Вам необходимо указать uri, который вернет пользователя в ваше приложение.

Для этого создайте фильтр намерений и добавьте Тег data с настраиваемой схемой, например myapplication://logincallback для действия. вы хотите обрабатывать логин.

Фильтр намерений будет выглядеть примерно так:

<intent-filter . . . >
    <data android:scheme="myapplication" android:host="logincallback" />
    . . .
</intent-filter>

Теперь установите redirect_uri как mypplication://logincallback на шаг авторизации потока, и когда пользователь нажмет розовую кнопку, он должен открыть действие, в которое вы добавили фильтр намерений.

Вы сможете получить параметры внутри своей активности, вызвав getData в намерении.

person andreban    schedule 19.11.2015
comment
Большое спасибо!! Завтра попробую это решение. Хорошего дня! - person Cloud; 19.11.2015
comment
похоже на обходной путь, мне нужно создать дополнительную активность, чтобы получить код. Есть ли хорошее решение, такое же, как веб-просмотры для вкладок Chrome? - person pyus13; 27.11.2015
comment
Это не работает. У меня есть URL-адрес только для обратного вызова, поэтому страница открывается с ошибкой не найдена, и только после перезагрузки активируется активность :( - person pyus13; 29.11.2015
comment
@Cloud У меня такая же проблема. Вы поняли это? - person C2H6O; 04.01.2016
comment
@ C2H6O кто-нибудь из вас когда-нибудь это понимал? Сам столкнулся с этой проблемой. - person russjr08; 19.01.2016
comment
@ russjr08 Нет, я не уверен, что это возможно. В итоге я использовал стандартный подход неявных намерений, который хорошо сработал для меня. - person C2H6O; 19.01.2016

<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="logincallback"
                android:pathPattern=".*"
                android:scheme="myapp" />
        </intent-filter>

Предположим, у вас есть redirect_uri myapp://logincallback, затем добавьте приведенный выше код в свою активность в XML-файле манифеста, и он будет работать.

person Jay    schedule 13.12.2018