使用 Cognito 开发人员身份验证的 AWS 移动分析

AWS Mobile Analytics using Cognito Developer Authentication

我应该如何配置 defaultServiceConfiguration,如果...

目前身份验证代码如下所示,延迟执行,仅当使用为注册用户保留的功能时:

CustomIdentityProvider *customIdentityProvider = [[CustomIdentityProvider alloc] initWithIdProvider:idProvider
                                                                                          accountId:_accountId
                                                                                     identityPoolId:_identityPoolId
                                                                                            idToken:idToken];
customIdentityProvider.logins = @{idProvider.name:idToken};

AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1
                                                                                              identityProvider:customIdentityProvider
                                                                                                 unauthRoleArn:nil
                                                                                                   authRoleArn:nil];
AWSServiceConfiguration *configuration = [AWSServiceConfiguration configurationWithRegion:AWSRegionUSEast1
                                                                      credentialsProvider:credentialsProvider];

[AWSServiceManager defaultServiceManager].defaultServiceConfiguration = configuration;

AWSTask * getIdentityIdTask = [credentialsProvider getIdentityId];

为了在应用程序中随时使用 Mobile Analytics,我是否必须在启动时设置 defaultServiceConfiguration? 但在那种情况下,我还没有登录信息。我应该如何在没有登录的情况下对用户进行身份验证?

谢谢。

Cognito 具有经过身份验证和未经过身份验证的身份的概念,经过身份验证的是您提供了一些登录信息,而未经过身份验证的情况是您没有。这两类用户的访问权限由您为该池设置的角色定义。

听起来您希望能够在任何一种情况下使用 Mobile Analytics,这仅意味着您需要确保您对池的两个角色都允许访问。默认的 Cognito 策略授予 Mobile Analytics Put Events 权限 - 如果您修改了生成的角色,可能值得确认这些角色是否存在。

考虑到这一点,您不一定需要登录才能为任何用户获取移动分析访问权限。对于您授予经过身份验证的身份的任何额外权利,如果需要,您可以稍后在代码中更新登录信息。

这是否回答了您的问题?