Reactjs 如何在浏览器中获取Cognito ID令牌?

Reactjs 如何在浏览器中获取Cognito ID令牌?,reactjs,amazon-web-services,aws-cognito,Reactjs,Amazon Web Services,Aws Cognito,我正在构建web应用程序(使用ReactJS)使用Cognito用户池进行用户管理,这将是使用cloudfront、api和lambda的无服务器应用程序。我正在寻找关于如何在浏览器中使用Javascript和实际登录获取Cognito IDToken的帮助。我只需要令牌并将其传递给API,API将从令牌中提取身份验证信息并将其用于某些特定目的 Amazon Cognito令牌存储在浏览器的本地存储中,但不建议直接从那里访问它们,因为它们可能会过期 最好使用SDK获取它们,您可以从SDK获取会话

我正在构建web应用程序(使用ReactJS)使用Cognito用户池进行用户管理,这将是使用cloudfront、api和lambda的无服务器应用程序。我正在寻找关于如何在浏览器中使用Javascript和实际登录获取Cognito IDToken的帮助。我只需要令牌并将其传递给API,API将从令牌中提取身份验证信息并将其用于某些特定目的

Amazon Cognito令牌存储在浏览器的本地存储中,但不建议直接从那里访问它们,因为它们可能会过期

最好使用SDK获取它们,您可以从SDK获取会话,会话反过来为您刷新令牌(如果令牌过期),并在会话仍然有效时为您提供有效令牌。例如:

import * as AmazonCognitoIdentity from "amazon-cognito-identity-js";

const poolData = {UserPoolId: "USER_POOL_ID", ClientId: "CLIENT_ID"};
const userPool = new AmazonCognitoIdentity.CognitoUserPool(poolData);

// React
const cognitoUser = userPool.getCurrentUser();
  if (cognitoUser != null) {
    cognitoUser.getSession((err, session) => {
      if (err) {
        console.log(err);
      } else if (!session.isValid()) {
        console.log("Invalid session.");
      } else {
        console.log("IdToken: " + session.getIdToken().getJwtToken());
      }
    });
  } else {
    console.log("User not found.");
  }

// React Native
userPool.storage.sync((error, result) => {
  if (error) {
    console.log(error);
  } else if (result === "SUCCESS") {
    const cognitoUser = userPool.getCurrentUser();
    if (cognitoUser != null) {
      cognitoUser.getSession((err, session) => {
        if (err) {
          console.log(err);
        } else if (!session.isValid()) {
          console.log("Invalid session.");
        } else {
          console.log("IdToken: " + session.getIdToken().getJwtToken());
        }
      });
    } else {
      console.log("User not found.");
    }
  } else {
    console.log("Storage sync error.");
  }
});
也许您正在寻找另一个注意getCurrentUser()使用刷新令牌自动刷新令牌。