首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在浏览器中获取Cognito ID令牌?

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

Stack Overflow用户
提问于 2018-04-02 14:55:02
回答 1查看 4.2K关注 0票数 1

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

EN

回答 1

Stack Overflow用户

发布于 2018-04-02 16:50:43

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

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

代码语言:javascript
复制
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.");
  }
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49606668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档