使用 Cognito 开发人员身份验证的 AWS 移动分析
AWS Mobile Analytics using Cognito Developer Authentication
我应该如何配置 defaultServiceConfiguration,如果...
- 我正在使用自定义身份提供程序通过 Cognito 对注册用户进行身份验证。 (在用户使用 user/password 注册到我们的服务之前,我不关心它是谁)
- 我想使用 Mobile Analytics 在应用程序中随时跟踪事件。 (即使是未注册的用户)
目前身份验证代码如下所示,延迟执行,仅当使用为注册用户保留的功能时:
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 权限 - 如果您修改了生成的角色,可能值得确认这些角色是否存在。
考虑到这一点,您不一定需要登录才能为任何用户获取移动分析访问权限。对于您授予经过身份验证的身份的任何额外权利,如果需要,您可以稍后在代码中更新登录信息。
这是否回答了您的问题?
我应该如何配置 defaultServiceConfiguration,如果...
- 我正在使用自定义身份提供程序通过 Cognito 对注册用户进行身份验证。 (在用户使用 user/password 注册到我们的服务之前,我不关心它是谁)
- 我想使用 Mobile Analytics 在应用程序中随时跟踪事件。 (即使是未注册的用户)
目前身份验证代码如下所示,延迟执行,仅当使用为注册用户保留的功能时:
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 权限 - 如果您修改了生成的角色,可能值得确认这些角色是否存在。
考虑到这一点,您不一定需要登录才能为任何用户获取移动分析访问权限。对于您授予经过身份验证的身份的任何额外权利,如果需要,您可以稍后在代码中更新登录信息。
这是否回答了您的问题?