小编Mir*_*aig的帖子

将社交身份联合用户身份验证到AWS Userpool? - Android

我们使用com.amazonaws:aws-android-sdk-cognitoidentityprovider:2.6.8SDK进行基于用户名和密码的登录和注册流程.继这里提到的方法https://docs.aws.amazon.com/cognito/latest/developerguide/tutorial-integrating-user-pools-android.html.注册和登录过程正在按要求运行.

对于Facebook和Google通过联合进行身份验证,我们不希望为此目的使用托管UI,也不希望使用联合身份.我们曾跟随这个链接https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-identity-federation.html.

  1. 我们已经设置了具有应用程序客户端和用户池域的用户池.
  2. 将Facebook设置为社交身份提供商.
  3. 添加了android回调URL到手机.

第一种方法

我们研究CognitoSyncDemo示例应用程序,它使用联合身份,因此我们不得不丢弃它.我们只是在userpool中使用联合.

第二种方法

我们使用了webview并加载了以下网址.URL将我直接带到Facebook,经过身份验证后,它会将我返回到重定向URL,其中包含access_token,auth_type,expires in和id_token.但没有刷新令牌.网址https://yourdomain.auth.us-east-1.amazoncognito.com/oauth2/authorize?redirect_uri=redirect_app_path&response_type=code&client_id="client_id"&identity_provider=Facebook

但使用这种方法存在问题.我无法找到一种方法将访问令牌推送到管理用户会话的SDK中的cognitoUserSession.因此,每次我注册Facebook(使用webview)时,SDK中都没有会话维护.因此,我被重定向到登录视图.如何确保Facebook用户通过cognitoidentityprovider进行身份验证和签名?获取access_token和id_token时如何在SDK中创建用户会话?

第三种方法

我们尝试使用Cognito Auth Demo https://github.com/awslabs/aws-sdk-android-samples/tree/master/AmazonCognitoAuthDemo.为此,我们必须添加另一个库com.amazonaws:aws-android-sdk-cognitoauth.点击登录后,它曾经带我们去托管-ui.在查看类似的IOS项目之后,我们在android库项目中进行了调整(com.amazonaws:用于android的aws-android-sdk-cognitoauth).我们在URI中添加了identity_provider以进行登录.然后我们将我们直接带到Chrome选项卡上的Facebook.验证后,它在我们的应用程序中设置会话.但它有自己的身份验证对象,即AuthSession,但之前我们使用CogintoUserSession进行正常注册.AuthSession没有用户属性,也不提供任何获取用户详细信息或身份验证处理程序.如果我们使用这种方法,那么如何将AuthSession与CognitoUserSession链接并管理应用程序中的用户会话?

摘要

简而言之,我们已经厌倦了AWS样本,它将我们带到了基于Web的托管UI.我们需要使用联合身份识别提供商通过Facebook对用户池进行身份验证.我们需要在Cognito SDK中维护会话,而不会影响我们基于用户名和密码的登录流程.我们希望在按钮点击时直接在我们的应用程序中打开Facebook或在webview上打开Facebook,仅使用Cognito SDK对应用程序进行身份验证并在应用程序中维护会话.

android facebook-login amazon-cognito aws-userpools

6
推荐指数
1
解决办法
461
查看次数