我想知道是否有人可以帮忙 . 对于我正在计划的Web应用程序,我正在尝试规划我需要的AWS服务以及它们如何挂在一起 .

具体来说,我正在考虑使用Cognito和DynamoDB进行用户注册和登录过程 .

用户需要注册并登录才能执行某些操作 . 我认为无服务器,所以这些操作将是API网关前面的Lambda函数 . 和许多网站一样,我想使用Facebook作为用户身份验证模型 . 我想我需要:

  • 创建Facebook应用程序

  • 使用Facebook应用程序ID配置Cognito Federated Identities

  • 使DynamoDB表包含用户信息

  • 提供允许用户使用其Facebook身份进行注册的工具

  • 注册时,在DynamoDB用户信息表中创建一条记录,其中包含用户姓名,电子邮件等,这些记录来自他们的Facebook Profiles

  • 为注册用户提供使用其Facebook身份登录的工具

  • 以某种方式将用户令牌(JWT令牌?)传递给后续客户端请求到API网关 endpoints

到目前为止,我已经创建了Facebook应用程序并拥有应用程序ID . 我为应用程序创建了Cognito Federated Identity,并使用我的Facebook应用程序ID进行配置 . 我已将API网关的方法请求的授权字段设置为“AWS_IAM”

使用Facebook javascript SDK和AWS javascript SDK,我整理了一个非常基本的页面,允许通过Facebook登录,然后使用facebook authResponse accessToken创建一个新的 AWS.CognitoIdentityCredentials 对象 . 最后,它调用 AWS.config.credentials.get 来获取Cognito凭据 . 但这并不是上面的步骤 - 它只是证明用户可以使用他们的Facebook ID登录,我可以将其传递给Cognito .

因此,我的具体问题是:

  • 我正在努力解决的是如何进行注册 . 用户通过Facebook登录后,如何在DynamoDB中创建用户记录?

  • 同样,当用户登录(而非注册)时,一旦用户通过Facebook登录,我如何确保他们在DynamoDB中拥有用户记录? (因为如果他们没有记录,那么可能他们没有注册)

  • 最后,如何将用户ID /令牌从客户端传递到API网关 endpoints ?

我不是在寻找代码示例等 - 只是指示我是在考虑正确的线路还是咆哮错误的树 . 各种组件需要挂在一起的高级别将是很好的,任何链接或对类似概念的引用都是如此 .

谢谢