在 aws-amplify js v6 中检索原始 accessToken 和 idToken

问题描述 投票:0回答:1

我在我的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 客户端。

react-native authentication jwt aws-amplify
1个回答
0
投票

这就是我在 Angular TypeScriptAmplify v6 中使用它的方式。

  1. 在顶部导入

    fetchAuthSession

    import { fetchAuthSession } from "aws-amplify/auth";
    
  2. 然后,只需在

    .toString()
    属性上应用
    idToken
    方法即可。

    var cognitoTokens = (await fetchAuthSession()).tokens;
    
    let rawToken = cognitoTokens?.idToken?.toString();
    let payload = cognitoTokens?.idToken?.payload;
    

    正如您在下面的屏幕截图中看到的,它提供了 2 个属性。

    这是我在调试过程中捕获的屏幕截图。

© www.soinside.com 2019 - 2024. All rights reserved.