菜鸟教程小白 发表于 2022-12-12 21:33:55

ios - 如何将 cognito 用户池与身份池集成?


                                            <p><p>我正在使用 CognitoUserPoolsSample iOS Obj-C 应用程序进行练习,并尝试添加与 Cognito Identity 的集成。我已经设置了一个用户池和一个身份池,其中用户池设置为身份池的身份验证提供程序。用户池工作正常,但用户没有出现在身份池中。
这是我在 applicationDidFinishLaunchingWithOptions 中的内容:</p>

<pre><code>//setup service config
AWSServiceConfiguration *serviceConfiguration = [ initWithRegion:AWSRegionUSEast1 credentialsProvider:nil];

//Configure user pool
AWSCognitoIdentityUserPoolConfiguration *userPoolConfiguration = [ initWithClientId:@&#34;CLIENT_ID&#34;clientSecret:@&#34;CLIENT_SECRET&#34; poolId:@&#34;POOL_ID&#34;];
;
AWSCognitoIdentityUserPool *pool = ;

//configure identity pool
AWSCognitoCredentialsProvider *credentialsProvider = [
                                                      initWithRegionType:AWSRegionUSEast1
                                                      identityPoolId:@&#34;IDENTITY_POOL_ID&#34;
                                                      identityProviderManager:pool];
AWSServiceConfiguration *configuration = [ initWithRegion:AWSRegionUSEast1 credentialsProvider:credentialsProvider];
.defaultServiceConfiguration = configuration;
</code></pre>

<p>到目前为止这是正确的吗?下一步是什么?为什么我注册一个新用户时它没有出现在身份池中?身份池控制台显示创建的身份为零。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>你好这里要理解的关键是当你打电话时:</p>

<pre><code>AWSCognitoCredentialsProvider *credentialsProvider = [
                                                      initWithRegionType:AWSRegionUSEast1
                                                      identityPoolId:@&#34;IDENTITY_POOL_ID&#34;
                                                      identityProviderManager:pool];
</code></pre>

<p>AWS 框架将为您设置好一切,并且 cognito 用户池和与联合身份的集成将无缝运行。 </p>

<p>我最初忽略的一个关键点在这里:<a href="http://docs.aws.amazon.com/cognito/latest/developerguide/getting-credentials.html" rel="noreferrer noopener nofollow">http://docs.aws.amazon.com/cognito/latest/developerguide/getting-credentials.html</a> </p>

<pre><code>[ continueWithBlock:^id(AWSTask *task) {
    if (task.error) {
      NSLog(@&#34;Error: %@&#34;, task.error);
    }
else {
       // the task result will contain the identity id
       NSString *cognitoId = task.result;
   }
return nil;
}];
</code></pre>

<p>这会强制从服务器刷新您的凭据。包含在用户和 session 中的对象可用于确认登录和关联的认知 id 以及 sessiontoken 。 </p>

<p>注意不要在上面的代码中同时使用 MobileHubHelper。因为移动 HUB Helper 会破坏这一切。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 如何将 cognito 用户池与身份池集成?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/38688345/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/38688345/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 如何将 cognito 用户池与身份池集成?