我在我的react-native应用程序中使用
aws-amplify
v6。
身份验证功能正常工作,但登录后我无法访问原始访问/ID 令牌。
尝试检索令牌,例如:
import { fetchAuthSession } from "aws-amplify/auth";
...
async getCurrentSession() {
const session = await fetchAuthSession();
console.log("Token: ", JSON.stringify(session.tokens?.idToken));
}
但是,会话内的令牌属于
JwtPayloadStandardFields
类型
并且仅包含令牌的解析有效负载,即
{
"payload":{
"sub":"4ac665ba-2e3c-40a0-93d8-515e2224fe22",
"email_verified":true,
"is":"...",
"cognito:username":"...",
"origin_jti":"c9f42d85-b7f2-4780-995a-562ff120d6c7",
"aud":"...",
"event_id":"2fe27904-8de0-4b53-80b5-abe166f98e9f",
"token_use":"id",
"auth_time":1701865836,
"exp":1702047957,
"iat":1702044358,
"jti":"28516f62-0cab-4a5d-a6f1-eb6dff6cadee",
"email":"xxx"
}
}
我想知道如何访问实际的 raw 令牌,因为我需要它们传递给 API 客户端。
这就是我在 Angular TypeScript 和 Amplify v6 中使用它的方式。
在顶部导入
fetchAuthSession
。
import { fetchAuthSession } from "aws-amplify/auth";
然后,只需在
.toString()
属性上应用 idToken
方法即可。
var cognitoTokens = (await fetchAuthSession()).tokens;
let rawToken = cognitoTokens?.idToken?.toString();
let payload = cognitoTokens?.idToken?.payload;
正如您在下面的屏幕截图中看到的,它提供了 2 个属性。
这是我在调试过程中捕获的屏幕截图。