首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >颤动放大认知,无令牌使用fetchAuthSession

颤动放大认知,无令牌使用fetchAuthSession
EN

Stack Overflow用户
提问于 2021-11-03 14:56:37
回答 1查看 197关注 0票数 1

我正在尝试使用Cognito在我的Flutter应用程序中实现身份验证。我正在对一个现有的userPool进行身份验证,我在过去一年中在我的React应用程序中成功地使用了它。

但是,使用Flutter时,我无法获取用户的会话。我可以成功登录,但无法使用fetchAuthSession()方法获取任何令牌。你知道为什么会发生这种事吗?下面是我的一些工作代码和非工作代码:

此代码成功...

代码语言:javascript
复制
Future _usersEmail() async {
    try {
      var attributes = (await Amplify.Auth.fetchUserAttributes()).toList();
      for (var attribute in attributes) {
        if (attribute.userAttributeKey == 'email') {
          print("user's email is ${attribute.value}");
          return '${attribute.value}';
        }
      }
      return 'no email';
    } on AuthException catch (e) {
      return '${e.message}';
    }
  }

这段代码也是成功的。

代码语言:javascript
复制
  Future<bool> _isSignedIn() async {
    final CognitoAuthSession session =
        await Amplify.Auth.fetchAuthSession() as CognitoAuthSession;
    print('_isSignedIn: ${session.isSignedIn}');
    return session.isSignedIn;
  }

此代码返回null...

代码语言:javascript
复制
  Future _getIdToken() async {
    final CognitoAuthSession session =
        await Amplify.Auth.fetchAuthSession() as CognitoAuthSession;
    final idToken = session.userPoolTokens?.idToken;
    print('idToken: $idToken');
    return idToken;
  }

这是我的amplifyconfig...

代码语言:javascript
复制
{
  "UserAgent": "aws-amplify-cli/2.0",
  "Version": "1.0",
  "auth": {
      "plugins": {
          "awsCognitoAuthPlugin": {
              "UserAgent": "aws-amplify-cli/0.1.0",
              "Version": "0.1.0",
              "IdentityManager": {
                  "Default": {}
              },
              "CredentialsProvider": {
                  "CognitoIdentity": {
                      "Default": {
                          "PoolId": "us-east-1_abcxyz",
                          "Region": "us-east-1"
                      }
                  }
              },
              "CognitoUserPool": {
                  "Default": {
                      "PoolId": "us-east-1_abcxyz",
                      "AppClientId": "5j0kii90dJ09est43xh3X21",
                      "Region": "us-east-1"
                  }
              },
              "Auth": {
                  "Default": {
                      "authenticationFlowType": "USER_SRP_AUTH"
                  }
              }
          }
      }
  }
}
EN

回答 1

Stack Overflow用户

发布于 2021-11-10 20:23:59

您可能需要在options参数中将getAWSCredentials设置为true,如下所示:

代码语言:javascript
复制
   final authSession = (await Amplify.Auth.fetchAuthSession(
      options: CognitoSessionOptions(getAWSCredentials: true),
    )) as CognitoAuthSession;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69827060

复制
相关文章

相似问题

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