- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我们已将 com.amazonaws:aws-android-sdk-cognitoidentityprovider:2.6.8
SDK 用于基于用户名和密码的登录和注册流程。按照此处提到的方法 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 .
第一种方法
我们研究了 CognitoSyncDemo 示例应用程序,它使用联合身份,因此我们不得不放弃它。我们只是在用户池中使用联合。
第二种方法
我们已经使用了 webview 并加载了以下 URL。该 URL 将我直接带到 Facebook,经过身份验证后,它会返回到带有 access_token、auth_type、expires in 和 id_token 的重定向 URL。但没有刷新 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
但是使用这种方法有一个问题。我找不到将访问 token 推送到管理用户 session 的 SDK 中的 cognitoUserSession 的方法。所以每次我注册 Facebook(使用 webview)时,SDK 中都没有 session 维护。因此我再次被重定向到登录 View 。如何确保 Facebook 用户通过 cognitoidentityprovider 的身份验证和登录?如何在获取access_token和id_token时在SDK中创建用户 session ?
第三种方法
我们尝试使用 Cognito Auth Demo https://github.com/awslabs/aws-sdk-android-samples/tree/master/AmazonCognitoAuthDemo .为此,我们必须添加另一个库 com.amazonaws:aws-android-sdk-cognitoauth
。单击登录后,它曾经将我们带到 hosted-ui。在研究了类似的 IOS 项目后,我们对 android 库项目进行了调整(com.amazonaws:aws-android-sdk-cognitoauth for android)。我们在 URI 中添加了 identity_provider 用于登录。然后它将我们直接带到 chrome 选项卡上的 Facebook。身份验证后,它在我们的应用程序中设置 session 。但它有自己的身份验证对象,即 AuthSession 但之前我们使用 CogintoUserSession 进行正常注册。 AuthSession 没有用户属性,也不提供任何获取用户详细信息或身份验证处理程序。如果我们使用这种方法,那么如何将 AuthSession 与 CognitoUserSession 链接起来并管理应用程序中的用户 session ?
总结
简而言之,我们已经厌倦了 AWS 示例,它将我们带到基于 Web 的托管 UI。我们需要仅使用联合身份提供者通过 Facebook 向用户池验证用户。我们需要在 Cognito SDK 中维护 session ,而不影响我们基于用户名和密码的登录流程。我们希望在单击按钮时直接或在我们的应用程序中的 webview 上打开 Facebook,验证用户并仅使用 Cognito SDK 在应用程序中维护 session 。
最佳答案
为了连接到用户池,我包含了 aws-android-sdk-cognitoidentityprovider。但是,如果您需要添加社交注册,则还需要添加 cognitoauth。
确保 cognito sdk 版本相同,否则您可能会遇到复杂的错误。
根据项目需要,我需要将身份提供者传递给 sdk,以便它可以直接导航到我的社交身份提供者页面。但是当前的 sdk 版本 '2.6.24' 并没有为我提供这个规定。我已经从 awslab github 下载了 android-sdk-cognitoauth sdk 并包含在我的项目中。我改变了 Auth.java 类,在其中添加了身份提供者变量。
下一步,我将更改 AuthClient.java 方法 launchCognitoAuth。我放置了额外的条件来检查身份提供者是否存在。然后我将它设置在 uri 中。
if (pool.getIdentityProvider() != null) {
builder.appendQueryParameter(ClientConstants.DOMAIN_QUERY_PARAM_IDENTITY_PROVIDER, pool.getIdentityProvider().toString());
}
进行上述更改后,我可以通过我的应用程序在 auth.builder() 中配置身份提供者。黑客成功了,我直接导航到我的供应商页面。身份验证后,sdk 会自行设置 session 。
总而言之,我发现了android和ios项目实现之间的差异。在 iOS 项目中,aws 已经给出了直接添加身份提供者的规定。我按照 ios 项目的流程对 android congitio-auth 项目进行了调整。差异也已报告给 aws-sdk-android-sample issues .
关于android - 向 AWS Userpool 验证社交身份联合身份验证用户? - 安卓,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51185577/
在为 Web 应用程序用例图建模时,为用户可以拥有的每个角色创建一个角色是否更好?或拥有一个角色、用户和一个具有特权的矩阵? guest < 用户 < 版主 < 管理员 1: guest 、用户、版主
我无法使用 Elixir 连接到 Postgres: ** (Mix) The database for PhoenixChat.Repo couldn't be created: FATAL 28P
这个问题已经有答案了: Group by field name in Java (7 个回答) 已关闭 7 年前。 我必须编写一个需要 List 的方法并返回 Map> . User包含 Person
感谢您的帮助,首先我将显示代码: $dotaz = "Select * from customers JOIN contracts where customers.user_id ='".$_SESS
我只想向所有用户中的一个用户显示一个按钮。我尝试了 orderByKey() 但没有成功! 用户模型有 id 成员,我尝试使用 orderByChild("id") 但结果相同! 我什至尝试了以下技巧
我们在工作中从 MongoDB 切换到 Postgres,我正在建立一个 BDR 组。 在这一步,我正在考虑安全性并尽可能锁定。因此,我希望设置一个 replication 用户(角色)并让 BDR
export class UserListComponent implements OnInit{ users; constructor(private userService: UserS
我可以使用 Sonata User Bundle 将 FOS 包集成到 sonata Admin 包中。我的登录功能正常。现在我想添加 FOSUserBundle 中的更改密码等功能到 sonata
在 LinkedIn 中创建新应用程序时,我得到 4 个单独的代码: API key 秘钥 OAuth 用户 token OAuth 用户密码 我在 OAuth 流程中使用前两个。 的目的是什么?最后
所以..我几乎解决了所有问题。但现在我要处理另一个问题。我使用了这个连接字符串: SqlConnection con = new SqlConnection(@"Data Source=.\SQLEX
我有一组“用户”和一组“订单”。我想列出每个 user_id 的所有 order_id。 var users = { 0: { user_id: 111, us
我已经为我的Django应用创建了一个用户模型 class User(Model): """ The Authentication model. This contains the u
我被这个问题困住了,找不到解决方案。寻找一些方向。我正在用 laravel 开发一个新的项目,目前正致力于用户认证。我正在使用 Laravels 5.8 身份验证模块。 对密码恢复 View 做了一些
安装后我正在使用ansible配置几台计算机。 为此,我在机器上本地运行 ansible。安装中的“主要”用户通常具有不同的名称。我想将该用户用于诸如 become_user 之类的变量. “主要”用
我正在尝试制作一个运行 syncdb 的批处理文件来创建一个数据库文件,然后使用用户名“admin”和密码“admin”创建一个 super 用户。 到目前为止我的代码: python manage.
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 6 年前。 Improv
我已在 Azure 数据库服务器上设置异地复制。 服务器上运行的数据库之一具有我通过 SSMS 创建的登录名和用户: https://learn.microsoft.com/en-us/azure/s
我有一个 ionic 2 应用程序,正在使用 native FB Login 来检索名称/图片并将其保存到 NativeStorage。流程是我打开WelcomePage、登录并保存数据。从那里,na
这是我的用户身份验证方法: def user_login(request): if request.method == 'POST': username = request.P
我试图获取来自特定用户的所有推文,但是当我迭代在模板中抛出推文时,我得到“User”对象不可迭代 观看次数 tweets = User.objects.get(username__iexact='us
我是一名优秀的程序员,十分优秀!