aws cognito用户获取id令牌android

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了aws cognito用户获取id令牌android相关的知识,希望对你有一定的参考价值。

我正在尝试在android中获取当前登录用户的ids令牌以获取aws cognito。

我找到了这个例子:session.getIdToken()。getJWTToken()其中session是CognitoUserSession对象

在登录呼叫完成后,我似乎无法找到获得当前认知能力的方法。

我正在使用笔记教程中的默认验证器活动:https://docs.aws.amazon.com/aws-mobile/latest/developerguide/tutorial-android-aws-mobile-notes-auth.html

它说令牌存储在共享首选项中,但我无法弄清楚如何在将来的活动中检索它们,以便我可以使用id令牌调用api网关。

答案

当令牌未/将过期时,AWS Android SDK将在没有网络呼叫的情况下返回JWT令牌。

可以使用CognitoIdentityProviderClientConfig.setRefreshThreshold(long)方法设置何时刷新令牌的阈值。

如果您对如何自己检索令牌感到好奇,那么可以在readCachedTokens()方法中找到代码https://github.com/aws/aws-sdk-android/blob/master/aws-android-sdk-cognitoidentityprovider/src/main/java/com/amazonaws/mobileconnectors/cognitoidentityprovider/CognitoUser.java#L2116

另一答案

由于还没有人回答,这可能会帮助你,请注意这是JS代码:

这是我从已登录用户接收会话的例程。在此之后,我可以访问令牌。

  var user_data = {
    UserPoolId: AWSConfiguration.UserPoolId,
    ClientId: AWSConfiguration.ClientAppId
  };

  var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(user_data);

  if (userPool.getCurrentUser() != null) {
    userPool.getCurrentUser().getSession(function (err, session) {
      if (err) {
        window.location.href = "login.html";
      }
      var user_params = {
        IdentityPoolId: AWSConfiguration.IdPoolId,
        Logins: {
          'cognito-idp.eu-central-1.amazonaws.com/eu-central-1_XXX':session.idToken.jwtToken
        }
      };
      AWS.config.credentials = new AWS.CognitoIdentityCredentials(user_params);
      AWS.config.region = AWSConfiguration.region;

      AWS.config.credentials.refresh((error) => {
        if (error) {
          console.error(error);
        } 
        else {
          user_is_authenticated();
        }
      });
    });
  }

以上是关于aws cognito用户获取id令牌android的主要内容,如果未能解决你的问题,请参考以下文章

如何从 c# 中的 aws cognito 获取用户属性

用于获取AWS Cognito用户池令牌的OAUTH2服务器?

如何从通过 Google/Federated Login 登录的 AWS Cognito 检索 id 令牌

ASP.NET Core AWS Cognito JWT

Swift - AWS Cognito 使用 Amplify - 如何在 swift 登录后获取令牌?

如何配置 AWS 用户 cognito 身份验证流程以在 Java sdk 后端生成身份令牌、访问令牌?