在AWS Cognito中,当域名未返回访问令牌时,可能是由于以下原因:
未正确设置客户端的回调URL:确保在Cognito用户池中正确配置了客户端应用程序的回调URL。回调URL应指向您的应用程序的登录或身份验证页面。
未正确设置OAuth2.0授权代码流程:确保您的应用程序在进行OAuth2.0授权代码流程时,已正确设置了Cognito用户池的授权端点和参数。以下是一个示例:
import requests
# 构建授权URL
auth_base_url = 'https://your-cognito-domain.auth.your-region.amazoncognito.com'
auth_url = f'{auth_base_url}/oauth2/authorize?response_type=code&client_id=your-client-id&redirect_uri=your-redirect-url'
# 发送授权请求
response = requests.get(auth_url)
# 提取访问令牌
if response.status_code == 200:
# 提取访问令牌
access_token = response.json().get('access_token')
print(f'Access Token: {access_token}')
else:
print('Failed to get access token.')
确保在auth_base_url中替换your-cognito-domain为您的Cognito域名,your-region为您的AWS区域,your-client-id为您的Cognito用户池客户端ID,your-redirect-url为您的应用程序的回调URL。
import requests
# 构建访问令牌请求URL
token_url = f'{auth_base_url}/oauth2/token'
# 构建访问令牌请求参数
params = {
'grant_type': 'authorization_code',
'client_id': 'your-client-id',
'code': 'your-authorization-code',
'redirect_uri': 'your-redirect-url'
}
# 发送访问令牌请求
response = requests.post(token_url, data=params)
# 提取访问令牌
if response.status_code == 200:
# 提取访问令牌
access_token = response.json().get('access_token')
print(f'Access Token: {access_token}')
else:
print('Failed to get access token.')
确保在params中替换your-client-id为您的Cognito用户池客户端ID,your-authorization-code为Cognito返回的授权码,your-redirect-url为您的应用程序的回调URL。
通过以上方法,您可以解决AWS Cognito中域名未返回访问令牌的问题。