Как идентифицировать пользователя приложения после авторизации Fitbit - PullRequest
0 голосов
/ 14 мая 2018

Предположим, что пользователь с идентификатором 100 в нашей базе данных приложения запускает авторизацию OAuth 2.0 с Fitbit, используя конечную точку http://localhost/api/100/fitbit/authorize,, авторизуется с помощью обратного вызова http://localhost/api/fitbit/callback.

Как мы можем определить, какой пользователь был авторизован, чтобы мы могли сохранить токен доступа и обновить токен? URL обратного вызова не может содержать идентификатор пользователя 100, поскольку конфигурация Fitbit не допускает дополнительных параметров в URL перенаправления.

Или есть какой-то другой способ идентификации авторизованного пользователя?

1 Ответ

0 голосов
/ 16 января 2019

Кажется, есть некоторое недопонимание относительно того, как работает OAuth 2.0.

В вашем вопросе вы используете слово callback , как если бы серверы Fitbit собирались сделать HTTP-запрос на этот URL, но это не так. В результате пользовательский агент, на котором была отображена страница авторизации Fitbit, получает ответ HTTP 302 Found с заголовком Location, содержащим URI перенаправления. Таким образом, это ответ , а не обратный вызов, и он инструктирует пользовательский агент загружать URI, указанный в заголовке Location (и, если пользовательский агент является браузером, он будет).

Обычно вы устанавливаете redirect_uri на страницу в вашем приложении, где ваш пользователь уже вошел в систему, чтобы вы могли идентифицировать идентификатор пользователя по данным сеанса (как и для любой другой страницы в вашем приложении). )

Если по какой-то причине вышеперечисленное не работает для вас, вы можете использовать параметр запроса state при перенаправлении пользователя на страницу авторизации OAuth 2.0 Fitbit. Документация Fitbit «Использование OAuth 2.0» описывает параметр state следующим образом:

Предоставляет любое состояние, которое может быть полезным для вашего приложения, когда пользователь перенаправляется обратно в ваше приложение. Этот параметр будет добавлен в URI перенаправления в точности так, как указано в вашем приложении.

Параметр state является стандартной функцией OAuth 2.0, поэтому он не относится к Fitbit. Его можно использовать с любым сервисом, который правильно реализует OAuth 2.0 в соответствии с RFC 6749 .

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