使用AWS Cognito通过FaceBooK登录到应用程序

Amazon Cognito是一项托管服务,使您能够将灵活且可扩展的用户管理系统集成到您的Web和移动应用程序中。 Cognito提供了两种不同的方式来使用该服务:联合身份(允许通过Facebook等社交网络登录)和用户池(为用户提供针对特定应用程序或一组应用程序的完全自定义用户管理功能)。

将身份池集成到您的移动应用程序中的第一步是创建Cognito IdentityPool。 这将为我们提供插入示例应用程序所需的配置值。 要创建新的身份池,请遍历Amazon Cognito控制台中提供的向导。 让我们逐步完成创建它的过程。

认知身份池

创建新的Cognito Pool的过程非常简单(假设您已经配置了Facebook App):

请注意,默认情况下,每个新的身份池将具有两个与之关联的角色,一个用于未认证的角色,一个用于已认证的用户的角色。

如果计划有多个身份池(例如,每个开发/阶段/产品环境一个单独的池),则可能要指定现有角色。 现在,我们将保持原样,因为稍后将更新这些角色。

在您的移动应用中设置Facebook登录

Android-JavaAndroid-Kotlin iOS-Swift

  1. 添加或更新您的AWS后端配置文件以合并您的新登录。 有关详细信息,请参阅“入门:设置您的后端”部分中的最后步骤。
  2. 安装Xcode 8+并创建新项目
  3. 转到项目的根文件夹,然后在编辑器中运行此命令“ amplify init”,然后运行amplify push,它将更新您在云上的所有更改。
  4. 步骤3之后,您将获得一个awsconfiguration.json文件,您必须将其附加到项目中。
  5. 在您的podfile中添加以下依赖项。

6.运行pod安装

从开发人员的角度来看,使用Cognito进行身份验证的关键概念非常简单:我们需要从身份验证提供程序(Facebook或OpenId)获取令牌,然后通过AWSCognitoCredentialsProvider将其传递到AWS默认配置。 该令牌最终将交换为会话属性和身份。

注意:您只能设置一次defaultServiceConfiguration ,任何后续的设置器都将被忽略。 我们缺少的是AWSIdentityProviderManager的实例:

该类的唯一目的是将令牌包装到字典中。 该词典应仅包含1个条目:

  [“ :“ ”] 

标识我们使用的提供商的类型(更多信息):

  • Facebook的 :“ graph.facebook.com”
  • Twitter :“ api.twitter.com”
  • Google :“ accounts.google.com”
  • 用户池 :“ cognito-idp。 .amazonaws.com / ”

好的,但是在这种情况下是什么? 这是一个示例,该示例在Facebook登录案例中的外观如何:

  [“ graph.facebook.com”:FBSDKAccessToken.current()。tokenString] 

这是最后一段代码,您可以复制/粘贴并尝试通过Facebook登录用户:

要启动注销,请添加对AWSSignInManager.sharedInstance().logout的调用。

  @IBAction func signOutButtonPress(_ sender:Any){AWSSignInManager.sharedInstance()。logout(completionHandler:{{result:Any ?, error:Error?)在 
self.showSignIn()
// print(“登出成功:\(signInProvider.getDisplayName)”); })
}