【发布时间】:2018-11-06 07:16:14
【问题描述】:
AWS 提供了两种可能的方式来处理 Cognito:
- “旧的”通过
amazon-cognito-identity-js(可能还有amazon-cognito-auth-js)和 - “新的”通过
aws-amplify(包括上面的一个)
经过相当多的麻烦和逆向工程,作为开发工作的一部分,我已经成功地使用aws-amplify 本地登录(接收回 CognitoIdentityCredentials)。
步骤(请耐心等待,因为这些对于接下来的问题很重要,也可能对某人有所帮助):
设置
在 Cognito 控制台中创建用户池
在 Cognito 控制台中创建用户池应用客户端
在 Google 控制台中创建 Google Web 应用
将 Google Web App 配置为指向 http://localhost:8080(我的本地开发服务器)
将用户池配置为使用 Google 作为身份提供者,并为它提供来自 Google 控制台的 Google Web App 客户端 ID 和客户端密码
在 Congnito 控制台中创建一个身份池,并将其配置为与 Google 作为身份提供者一起使用,并在那里提供 Google Web App 客户端 ID
实施
- 配置 Amplify.Auth:
- 注入 Google API 脚本:
- 初始化 Google API:
- 允许通过单击按钮让 Google 用户唱歌:
- 使用上面的
profile、id_token、expires_at创建 Cognito 凭据会话:
此时返回了一个CognitoIdentityCredentials 对象,该对象已正确填充,带有令牌和所有...
问题
不幸的是,aws-amplify 在我的应用程序 webpack 包(GZIPped、缩小、优化)中添加了高达 190K,这让我喝咖啡时噎住了。
问题 1
可以通过我缺少的 Babel 插件以某种方式减少这种情况(我猜,不,因为 AWS 显然仍处于 1995 年,并在单例 Amplify 和 Auth 对象上配置所有内容)。
问题 2
我是否让这变得不必要地复杂,并且有更强大的解决方案?
问题 3(最重要)
这是否可以使用“旧方式”amazon-cognito-identity-js 来实现,它要小得多?
在所有(用例)[https://github.com/aws/aws-amplify/tree/master/packages/amazon-cognito-identity-js/] 中,我找不到社交/联合登录的用例。
【问题讨论】:
-
您能帮帮我吗?我正在尝试实施类似的解决方案,但我被困在身份池中,我不知道如何与用户池集成
-
@placplacboom 在用户池(创建后)上有一个设置,可以让您定义身份池。就我而言,我配置了 Google,因此我必须提供一个 ID,该 ID 是从 Google Developer Console 获得的。您必须在那里创建一个应用程序,然后您才能配置身份提供者。
标签: javascript authentication amazon-cognito googlesigninapi