gpt4 book ai didi

javascript - 使用 Google 作为身份提供者在 AWS Cognito 用户/身份池中对用户进行身份验证

转载 作者:行者123 更新时间:2023-11-29 15:14:33 24 4
gpt4 key购买 nike

AWS 提供了两种处理 Cognito 的可能方式:

  1. “旧版”通过 amazon-cognito-identity-js(可能还有 amazon-cognito-auth-js)和
  2. “新的”通过 aws-amplify(包括上面的那个)

经过相当多的麻烦和逆向工程,作为开发的一部分,我已经成功地使用 aws-amplify 本地 登录(接收回 CognitoIdentityCredentials)努力。

其中的步骤(请耐心等待,因为这些对于后面的问题很重要,也可能对某人有所帮助):

设置

  1. 在 Cognito 控制台中创建用户池

  2. 在 Cognito 控制台中创建用户池应用程序客户端

  3. 在 Google 控制台中创建 Google Web App

  4. 将 Google Web App 配置为指向 http://localhost:8080 (我的本地开发服务器)

  5. 将用户池配置为使用 Google 作为身份提供者,为其提供来自 Google 控制台的 Google Web App 客户端 ID 和客户端密码

  6. 在 Congnito 控制台中创建一个身份池并将其配置为与 Google 一起作为身份提供者工作,并在那里提供 Google Web App 客户端 ID

实现

  1. 配置 Amplify.Auth:
Amplify.configure({    Auth: {        identityPoolId: ,        region: ,        userPoolId: ,        userPoolWebClientId:     }});
  1. 注入(inject) Google API 脚本:
const script = document.createElement('script');script.src = 'https://apis.google.com/js/platform.js';script.async = true;script.onload = this.initGapi;document.body.appendChild(script);
  1. 初始化 Google API:
window.gapi.load('auth2', function() {    window.gapi.auth2.init({        client_id: ,        scope: 'profile email openid'    });});
  1. 允许 Google 用户通过点击按钮唱出:
const ga = window.gapi.auth2.getAuthInstance();const googleUser = await ga.signIn();const {id_token, expires_at} = googleUser.getAuthResponse();const profile = googleUser.getBasicProfile();
  1. 使用上面的 profileid_tokenexpires_at 创建 Cognito 凭据 session :
const user = {    email: profile.getEmail(),    name: profile.getName()};const credentials = await Auth.federatedSignIn(    'google',    {token: id_token, expires_at},    user);

此时返回了一个 CognitoIdentityCredentials 对象,正确填充,带有 token 和所有...

问题

不幸的是,aws-amplify 将高达 190K 的内容添加到我的应用程序 webpack 包中(GZIP 压缩、缩小、优化),这让我喝咖啡噎住了。

问题一

这是否可以通过我丢失的 Babel 插件以某种方式减少(我猜,不会,因为 AWS 显然仍处于 1995 年,并且在单例 AmplifyAuth 上配置所有内容 对象)。

问题2

我是否让这个变得不必要地复杂了,并且有更强大的解决方案?

问题3(最重要)

这可以使用“旧方法”amazon-cognito-identity-js 来实现吗,它要小得多?

我在所有(用例)中找不到[ https://github.com/aws/aws-amplify/tree/master/packages/amazon-cognito-identity-js/]社交/联合登录的用例。

最佳答案

对我来说,两者之间的区别

import Amplify from 'aws-amplify'

import Amplify from '@aws-amplify/core'

经过约 500kB 的优化和缩小。

我想你也想

import Auth from '@aws-amplify/auth'

这只会增加一点点。

但我同意,aws-amplify 包确实非常大,要弄清楚如何直接使用核心组件(例如 aws-cognito-identity-js/es 和 aws-cognito-auth-js/es).

关于javascript - 使用 Google 作为身份提供者在 AWS Cognito 用户/身份池中对用户进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50553758/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com