首页 > 解决方案 > 如何使用 facebook 令牌或 google accesstoken 使用 nodejs 或 lambda 函数注册 AWS cognito?

问题描述

我正在尝试使用 Google 和 Facebook 登录添加 AWS Cognito。不知何故,当前的插件无法与我当前的设置一起使用,而且我现在无法让它工作几天。添加多个错误后https://github.com/agnostech/flutter_amplify/issues/4https://github.com/furaiev/amazon-cognito-identity-dart-2/issues/42到目前为止没有帮助。所以我想使用访问令牌向 lambda 发出获取/发布请求(因为我使用 Facebook 和 google 登录,但无法将用户添加到 Cognito),这将添加用户。

AWS.config.region = 'us-XXXXXXX-1';
// Add the Google access token to the Cognito credentials login map.
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
    IdentityPoolId: 'us-XXXX-1:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
    RoleArn: 'arn:aws:iam::XXXXXXXX:role/Cognito_XXXXXXXXXUnauth_Role',
    Logins: {
        'accounts.google.com': authResult['id_token']
    }
});

我正在关注此AWS Cognito + google 注册,但在当前日期是否有更好的方法来执行此操作?此外,每次用户登录时,它都会尝试将用户添加到 Cognito 吗?考虑到我们只有一个用于签名或注册的按钮。

提前致谢。

标签: node.jsamazon-web-servicesflutteraws-lambdaaws-amplify

解决方案


我刚刚阅读了本指南以使用 cognito 进行 google auth。 https://docs.aws.amazon.com/cognito/latest/developerguide/google.html

这很简单,你必须使用常规方式登录谷歌,一旦你从谷歌收到访问令牌,你就将它传递给 cognito。

logins.put("accounts.google.com", token); credentialsProvider.setLogins(logins);

打包方式,

有一个插件,请在此处查看指南中的一个用例。 https://pub.dev/packages/amazon_cognito_identity_dart_2

引用文档

用例 19.在移动设备上将此库与 Cognito 的联合登录一起使用。使用flutter_webview( https://pub.dev/packages/webview_flutter ) 导航到 Cognito 的授权 URL。使用 flutter_webview 的 navigationDelegate 捕捉重定向到myapp://?code=<AUTH_CODE>. 向 Cognito 的令牌 URL发出POST请求以获取您的令牌。使用令牌创建会话和用户


推荐阅读