我已经使用 API“InitiateAuth”针对 Cognito 用户池进行了身份验证,并收到了一个 id 令牌:
{
sub: "8aec..." ,
aud:"2gr0fdlr647skqqghtau04vuct",
iss:"https://cognito-idp.us-east-1.amazonaws.com/us-east-1_LzM42GX6Q",
....
}
Run Code Online (Sandbox Code Playgroud)
然后我尝试通过 API“GetId”获取 ID:
{
AccountId: "345745834314"
IdentityPoolId: "us-east-1:fb4d5209-33b1-46e2-923a-8aa206d5c7aa"
Logins: {
"cognito-idp.us-east-1.amazonaws.com/us-east-1_LzM42GX6Q": "eyJr...."
}
}
Run Code Online (Sandbox Code Playgroud)
我已经设置了一个身份池,并正确地将 Cognito 用户池设置为提供者。但我总是得到响应表 getId:
“登录令牌无效。颁发者与提供者名称不匹配”
我还尝试将登录列表中的提供者名称更改为:
https://cognito-idp.us-east-1.amazonaws.com/us-east-1_LzM42GX6Q
因此它与令牌在 iss 字段中的内容完全匹配,但这并不能解决问题,仍然是关于发行者与提供者名称不匹配的相同消息。
知道我在这里做错了什么吗?
好吧,弄清楚了,实际上提供商名称周围有一组额外的引号:“cognito-idp.us-east-1.amazonaws.com/us-east-1_LzM42GX6Q”
在开发者控制台中显示:
{
AccountId: "345745834314"
IdentityPoolId: "us-east-1:fb4d5209-33b1-46e2-923a-8aa206d5c7aa"
Logins: {
"cognito-idp.us-east-1.amazonaws.com/us-east-1_LzM42GX6Q": "eyJr...."
}
Run Code Online (Sandbox Code Playgroud)
}
其中只有提供商名称周围有引号,没有其他字段,这让我感到怀疑。我点击“查看源代码”查看发送的实际 json,如下所示:
"\"cognito-idp.us-east-1.amazonaws.com/us-east-1_LzM42GX6Q\""
Run Code Online (Sandbox Code Playgroud)
我删除了多余的引号并且它有效。
| 归档时间: |
|
| 查看次数: |
7985 次 |
| 最近记录: |