当AWS Cognito重定向不匹配时,可能有多种原因。下面是一些常见的解决方法,并包含了一些代码示例:
示例代码:
app_client_id = 'your_app_client_id'
redirect_uri = 'https://your_app_domain/callback'
auth_url = cognito_client.initiate_auth(
ClientId=app_client_id,
AuthFlow='USER_SRP_AUTH',
AuthParameters={
'USERNAME': username,
'SRP_A': srp_a,
'SECRET_HASH': secret_hash
},
ClientMetadata={
'redirect_uri': redirect_uri
}
)
auth_code参数调用Cognito的exchange_auth_code_for_tokens方法来交换授权代码。示例代码:
response = cognito_client.exchange_auth_code_for_tokens(
ClientId=app_client_id,
Code=auth_code,
RedirectUri=redirect_uri
)
示例代码(Flask Web应用程序):
from flask import Flask, request, redirect
app = Flask(__name__)
@app.route('/callback')
def callback():
# 处理授权代码交换
# ...
@app.route('/login')
def login():
# 构建Cognito登录URL
login_url = 'https://your_cognito_domain/login'
redirect_uri = 'https://your_app_domain/callback'
client_id = 'your_app_client_id'
scope = 'openid'
params = {
'response_type': 'code',
'client_id': client_id,
'redirect_uri': redirect_uri,
'scope': scope
}
login_url = login_url + '?' + urllib.parse.urlencode(params)
return redirect(login_url)
if __name__ == '__main__':
app.run()
这些解决方法应该能够帮助您解决AWS Cognito重定向不匹配的问题。请注意,代码示例可能需要根据您的具体情况进行适当的修改。