Регистрация Cognito в Facebook не создает пользователя - PullRequest
0 голосов
/ 31 января 2019

Я получаю токен из Facebook, передаю его Cognito, но он не создает пользователя в пуле пользователей.Что мне делать дополнительно, чтобы создать пользователя?

FacebookProvider *socialProvider = [[FacebookProvider alloc] init];
                    [socialProvider initWithTokens:@{@"graph.facebook.com":result.token.tokenString}];

                    AWSCognitoCredentialsProvider *socialCredentialsProvider = [[AWSCognitoCredentialsProvider alloc]
                                                                                initWithRegionType:AWSRegionUSEast1
                                                                                identityPoolId:CognitoIdentityUserPoolId
                                                                                identityProviderManager:socialProvider];
                    // Self.socialProvider is that class that implements AWSIdentityProviderManager protocol

                    AWSServiceConfiguration *fbConfiguration = [[AWSServiceConfiguration alloc]
                                                                initWithRegion:AWSRegionUSEast1 credentialsProvider:socialCredentialsProvider];
                    AWSServiceManager.defaultServiceManager.defaultServiceConfiguration = fbConfiguration;

                    //create a pool
                    AWSCognitoIdentityUserPoolConfiguration *configuration = [[AWSCognitoIdentityUserPoolConfiguration alloc] initWithClientId:CognitoIdentityUserPoolAppClientId  clientSecret:CognitoIdentityUserPoolAppClientSecret poolId:CognitoIdentityUserPoolId];

                    [AWSCognitoIdentityUserPool registerCognitoIdentityUserPoolWithConfiguration:fbConfiguration userPoolConfiguration:configuration forKey:@"UserPool"];

                    AWSCognitoIdentityUserPool *pool = [AWSCognitoIdentityUserPool CognitoIdentityUserPoolForKey:@"UserPool"];

                    pool.delegate = self;

                    NSLog(@"socialCredentialsProvider.getIdentityId: %@", socialCredentialsProvider.getIdentityId);

1 Ответ

0 голосов
/ 31 января 2019

Вызов API iOS, который вы используете, является вызовом API Identity Pool, а не вызовом API User Pool.Пулы идентификации Cognito и пулы пользователей Cognito по своей природе сильно отделены друг от друга, и любые связанные идентификаторы входа / идентификатора не отражаются в пуле пользователей.Пулы пользователя Cognito используются для аутентификации, а пулы идентификации Cognito используются для аутентификации.В контексте сетевой безопасности аутентификация означает проверку личности, а авторизация включает предоставление доступа к набору ресурсов (в данном случае ресурсы AWS через временные учетные данные, предоставляемые AWS STS).

Если вы хотите использоватьФедеративные логины Facebook в вашем приложении iOS, я бы порекомендовал вам прочитать о OAuth 2.0, совместимом AUTHORIZATION Endpoint .Пример URL-адреса конечной точки AUTHORIZATION с провайдером идентичности Facebook соответствует указанному формату:

https://(COGNITO_USER_POOL_DOMAIN_NAME)/oauth2/authorize?redirect_uri=https://www.google.com&response_type=token&client_id=XXXX&identity_provider=Facebook

Я бы порекомендовал вам прочитать разницу между пользовательскими пулами Cognito.и Cognito Identity Pools для дальнейшего понимания работы службы Cognito.

...