ios - 亚马逊 Cognito iOS

标签 ios objective-c amazon-web-services amazon-cognito

我正在尝试将 Amazon Web Services 集成到我的应用程序中,但坦率地说,这是一个重大挑战,而且非常烦人。

我正在使用适用于 iOS 的 Amazon SDK (V2.1.0),这就是我想要实现的目标:

  1. 在我的应用程序中,我有一个注册屏幕,我的用户可以在其中使用 Facebook 或通过创建帐户来注册我的应用程序
  2. 如果用户希望创建一个帐户,我计划使用 Amazon Cognito 安全访问 Amazon DynamoDB(通过 iOS 应用程序),我将在其中存储电子邮件和密码。

我试图让 Amazon Cognito 在我的 ViewController 中使用以下代码,但我得到的变量 cognitoId 为 nil。我的代码如下:

AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1
                                                                                                identityPoolId:@"us-east-1:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX"];
AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSEast1
                                                                     credentialsProvider:credentialsProvider];
AWSServiceManager.defaultServiceManager.defaultServiceConfiguration = configuration;

NSString *cognitoId = credentialsProvider.identityId; //NULL

根据我上面的解释,我有以下问题:

  1. 我的 Amazon Cognito 使用案例在这种情况下是否正确?
  2. 为什么上面的代码不起作用?
  3. 我认为这个问题可能与身份池中配置的 iam 角色有关。我不确定在安全方面应该扮演什么角色。一旦用户注册,该应用程序将需要权限才能写入我的 DynamoDB,而不会暴露任何安全漏洞。任何人都可以对此提供任何见解吗?

我感谢任何能提供帮助的人。在过去的几天里,我一直在试图让它发挥作用,这让我失去了理智。

谢谢!

最佳答案

默认情况下未设置 Cognito 身份 ID。您是在调用 getIdentityId 还是通过提供商刷新?如果没有,我会尝试一下,看看您是否会得到结果。

至于您的其他问题,Cognito 支持“公共(public)提供商”,例如 facebook、google 和 amazon,以及开发人员身份验证。对于你建议的 facebook 案例,你可以很容易地在那里使用 Cognito。关于 Cognito 角色和策略的博客文章可用 here .

开发人员身份验证可能是实现第二个用例的有效(且更安全)方式。该工作流将要求您有一个后端服务器,但您只能向该服务器授予对发电机数据库表的访问权限。用户登录后,应用程序会将数据发送到您的服务器,该服务器会验证并回复凭据,然后用户就可以访问您的其他 AWS 资源。描述此上下文中的角色和策略的博客文章可用 here并且可以提供有关细节的更多详细信息并列出端到端示例 here .

关于ios - 亚马逊 Cognito iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29325328/

相关文章:

ios - 为什么在编码 URL 时格式化 NSPredicate 会导致 swift 崩溃?

iphone - UILabel 的 sizeThatFits 是否返回它的高度?

amazon-web-services - 在 AWS 中扩展聊天的想法?

amazon-web-services - s3 预签名 url 多部分表单数据上传错误 :signature does not match

ios - 如何从起点和滚动点找到终点坐标

iOS:自动布局的问题。模拟器结果随着 Storyboard的变化而变化

ios - `react-native run-ios` 打开两个错误的调试选项卡

objective-c - Objective-C 中的线程

amazon-web-services - 带有动态(自定义)文本的 AWS 出站 api 调用和带有文本转语音的电话?

ios - 核心数据 : The model used to open the store is incompatible with the one used to create the store