Как работает неявный поток грантов?
На этой странице https://github.com/doorkeeper-gem/doorkeeper/wiki/Supported-Features упоминается поддержка неявных грантов. Похоже, что авторизации # create - это конечная точка, которую я хочу, и она возвращает access_token, но не возвращает другие необходимые параметры.
Запрос
https://localhost/oauth/authorize?client_id=<client_id>&response_type=token&redirect_uri=urn:ietf:wg:oauth:2.0:oob
Я перенаправлен на:
переадресовывать
https://localhost?access_token=<access_token> with the body:
{"resource_owner_id":<user_id>,"scopes":[],"expires_in_seconds":7776000,"application":{"uid":"<client_id>"},"created_at":1484857630}
Что мне нужно в спецификации, так это перенаправление с параметрами запроса:
https://localhost#access_token=<access_token>&token_type=bearer&expires_in=<seconds>&scope=<scope>
Меняет ли использование тестовое значение перенаправления "redirect_uri=urn:ietf:wg:oauth:2.0:oob" ответ?
Также обратите внимание на? вместо # перед параметрами запроса ответа. Я не уверен, что спецификация говорит об этом, но клиентам Amazon OAuth2 требуется знак #.
Как мне получить token_type=bearer?
Благодарю.
1 ответ
Я смог заставить свой сервис работать, посмотрев на код. Итак, ответы на мои вопросы выше:
urn: ietf: wg: oauth: 2.0: называется собственным URI. В коде есть ветвление, которое изменяет ответ, когда он установлен на собственный URI. Используя ngrok для создания внешне вызываемой конечной точки на моем локальном компьютере, я использовал истинное значение redirect_uri, и Doorkeeper ответил правильными параметрами в ответе (включая token_type=bearer и знак #).
Примечание. Из моего навыка Amazon Alexa он работал только после изменения кода Doorkeeper, чтобы разрешить перенаправление URL-адресов, содержащих параметры запроса. URL-адреса перенаправления Amazon находятся в формате https://pitangui.amazon.com/spa/skill/account-linking-status.html?vendorId=<vendorId>
который в настоящее время не поддерживается Doorkeeper и выдает ошибку о недопустимом URI перенаправления.