繁体   English   中英

如何使用 swift 从 AuthCognitoTokensProvider 检索 Cognito 令牌

[英]How to retrieve Cognito token from AuthCognitoTokensProvider using swift

我已经成功地将 Amplify 集成到我的项目中。 这帮助我注册、登录和退出。 现在我需要一种方法来检索 Cognito 令牌,以便我可以使用它在我的应用程序中进行 api 调用。 不幸的是,这没有用,当我尝试从我的 Amplify.Auth.fetchAuthSession 方法中转换 session 时,出现以下错误。 而且我还能够获得 isSignedIn 状态。 > cast session Optional(AmplifyPlugins.AWSAuthCognitoSession(isSignedIn: true, userSubResult: Swift.Result<Swift.String, Amplify.AuthError>.failure(AuthError: 消息发生意外错误:发生未知错误恢复建议:这不应该发生。一直报错可能是有BUG,请查看

错误域=com.amazonaws.AWSCognitoIdentityErrorDomain 代码=5“(空)”用户信息={__type=InvalidIdentityPoolConfigurationException,消息=身份池配置无效。 检查为此池分配的 IAM 角色。}), identityIdResult: Swift.Result<Swift.String, Amplify.AuthError>.failure(AuthError: 消息发生意外错误:发生未知错误恢复建议:这不应该发生。

Amplify.Auth.fetchAuthSession { result in
    do {
      let session = try result.get()
      print(session.isSignedIn)
        let castSession = session as? AWSAuthCognitoSession
        print("cast session ", castSession)
      if let cognitoTokenProvider = session as? AuthCognitoTokensProvider {
      let tokens = try cognitoTokenProvider.getCognitoTokens().get()
          print("Token ", tokens)
      }

    } catch {
      print(error.localizedDescription)
    }
}

isSignedIn 值为真。 当我尝试转换和检索 Cognito 令牌时抛出 catch 异常

在我的项目中设置放大时,我只能选择 Cognito 用户池。 这解决了我的问题,我能够检索到 accessToken 和 rest。希望有一天这能帮助某人干杯

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM