Я пытаюсь интегрировать Google с Amazon Cognito в приложение iOS с помощью SDK для входа в Google, но я не могу понять, как получить Значок идентификатора JWT правильно. Я уверен, что все настроено правильно, поскольку как Google Sign-In, так и Cognito работают независимо.Получение токена идентификатора межсайтового клиента для AWS из SDK для входа в систему Google
Я настраиваю GIDSignIn следующим образом.
[GIDSignIn sharedInstance].scopes = @[kGTLAuthScopePlusLogin, kGTLAuthScopeDrive];
[[GIDSignIn sharedInstance] setClientID:kClientID];
[GIDSignIn sharedInstance] setServerClientID:kServerClientId];
, а затем, чтобы получить id_token, как указано here с исключением того, что я использую Google для входа в систему, а не Google+ зарегистрировались, который не имеет GTMOAuth2Authentication.
- (void)googleSignedIn:(GIDGoogleUser *) user
{
NSLog(@"AWSManager: Google signed in, id token = %@", user.authentication.idToken);
NSString *idToken = user.authentication.idToken;
self.credentialsProvider.logins = @{ @(AWSCognitoLoginProviderKeyGoogle): idToken};
но idtoken не является текстовым веб-токеном json, это всего лишь кусок символов. AWS выбрасывает эту ошибку -
AWSiOSSDKv2 [Error] AWSIdentityProvider.m line:185
| __51-[AWSAbstractCognitoIdentityProvider getIdentityId]_block_invoke169
| GetId failed.
Error is [Error Domain=com.amazonaws.AWSCognitoIdentityErrorDomain Code=9
"The operation couldn’t be completed. (com.amazonaws.AWSCognitoIdentityErrorDomain error 9.)"
UserInfo=0x8fa5eb8e4e40{__type=NotAuthorizedException, message=Token is not from a supported provider of this identity pool.}]
Я понятия не имею, что я должен делать. Я довольно новичок в объективе-c и все это сделал на Android раньше. На андроиде я сделал:
String mServerClientId = "audience:server:client_id:xxxxxxxxxx.apps.googleusercontent.com"
String token = GoogleAuthUtil.getToken(getApplicationContext(), accountName, mServerClientId);
для извлечения лексем, но насколько я могу сказать, что нет ничего подобного, что на IOS. При необходимости я могу предоставить дополнительную информацию.
Спасибо!
Спасибо так много. Получил все! Ядро входа в кодировку base64 действительно отбросило меня. Вы были на 100% правильны в том, что мне нужно было настроить OpenId, а не использовать учетные данные Google+, как это было на Android. – charliebeckwith