将 Amazon Alexa grant_code 换成 access_token 时,凭据在哪里?
When exchanging the Amazon Alexa grant_code for an access_token, where are the credentials?
我正在尝试编写交换和访问端点,这里的文档 (https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/linking-an-alexa-user-with-a-user-in-your-system#h2_login) 有两点不清楚:
交换访问令牌授权代码的调用是如何进行的 - 它是在 QS 中使用凭据获取还是在正文中使用 POST 凭据?
访问令牌是仅在 JSON 中为意向调用传送的,还是已正确设置为不记名令牌?
- 这是一个
POST
,在请求 body 中有凭据。在这种情况下,Amazon 正确遵循 the Oauth2 RFC。
- 访问令牌由 Amazon 仅 在 JSON 中针对意图请求提供,并且 not 正确设置为承载。这很烦人。
在我的例子中,我不得不绕过它,首先验证请求是否是一个有效的 alexa 请求,其中包含一个 session 和一个访问令牌,然后设置 HTTP_AUTHORIZATION
header 到 Bearer <token>
,然后使用现有的请求身份验证逻辑进行身份验证(我将 Django 与 django-oauth-toolkit 一起使用,所以 YMMV 如果您使用其他东西)。
该代码看起来像这样:
# get the access_token from the POST request
if access_token is not None:
request.META["HTTP_AUTHORIZATION"] = "Bearer " + access_token
if not hasattr(request, 'user') or request.user.is_anonymous():
user = authenticate(request=request)
if user:
request.user = request._cached_user = user
if request.user.is_authenticated():
# Do whatever with the logged in user
我正在尝试编写交换和访问端点,这里的文档 (https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/linking-an-alexa-user-with-a-user-in-your-system#h2_login) 有两点不清楚:
交换访问令牌授权代码的调用是如何进行的 - 它是在 QS 中使用凭据获取还是在正文中使用 POST 凭据?
访问令牌是仅在 JSON 中为意向调用传送的,还是已正确设置为不记名令牌?
- 这是一个
POST
,在请求 body 中有凭据。在这种情况下,Amazon 正确遵循 the Oauth2 RFC。 - 访问令牌由 Amazon 仅 在 JSON 中针对意图请求提供,并且 not 正确设置为承载。这很烦人。
在我的例子中,我不得不绕过它,首先验证请求是否是一个有效的 alexa 请求,其中包含一个 session 和一个访问令牌,然后设置 HTTP_AUTHORIZATION
header 到 Bearer <token>
,然后使用现有的请求身份验证逻辑进行身份验证(我将 Django 与 django-oauth-toolkit 一起使用,所以 YMMV 如果您使用其他东西)。
该代码看起来像这样:
# get the access_token from the POST request
if access_token is not None:
request.META["HTTP_AUTHORIZATION"] = "Bearer " + access_token
if not hasattr(request, 'user') or request.user.is_anonymous():
user = authenticate(request=request)
if user:
request.user = request._cached_user = user
if request.user.is_authenticated():
# Do whatever with the logged in user