AWS: NotAuthorizedException: неверный токен входа. Неверный токен аудитории. (Сервис: AmazonCognitoIdentity
При использовании MobileHubConsole в AWS я хотел использовать Google+ SignIn через Android.
но я получаю эту ошибку:
06-25 23:30:02.819 17675-17675/com.xxxxxx.xxxu E/SignInActivity: Sign-in with Google caused an error.
com.amazonaws.mobile.auth.core.signin.CognitoAuthException: com.amazonaws.services.cognitoidentity.model.NotAuthorizedException: Invalid login token. Incorrect token audience. (Service: AmazonCognitoIdentity; Status Code: 400; Error Code: NotAuthorizedException; Request ID: 971e8ed4-78a1-11e8-8b4b-69de317f28ea)
at com.amazonaws.mobile.auth.core.IdentityManager$SignInProviderResultAdapter.onCognitoError(IdentityManager.java:426)
at com.amazonaws.mobile.auth.core.IdentityManager$SignInProviderResultAdapter.access$1000(IdentityManager.java:400)
at com.amazonaws.mobile.auth.core.IdentityManager$3.run(IdentityManager.java:565)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:428)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:760)
Caused by: com.amazonaws.services.cognitoidentity.model.NotAuthorizedException: Invalid login token. Incorrect token audience. (Service: AmazonCognitoIdentity; Status Code: 400; Error Code: NotAuthorizedException; Request ID: 971e8ed4-78a1-11e8-8b4b-69de317f28ea)
Я использую предоставляемую AWS библиотеку SignIn:
AWS-андроид-СДК-авт-щ
Интеграция в Android:
AWSMobileClient.getInstance().initialize(getActivity(), new AWSStartupHandler() {
@Override
public void onComplete(AWSStartupResult awsStartupResult) {
Log.e("SahajLOGOP", "Complete" +LoginFragment.this.getActivity()+" ");
SignInUI signin = (SignInUI) AWSMobileClient.getInstance().getClient(LoginFragment.this.getActivity(), SignInUI.class);
if (LoginFragment.this.getActivity()!=null)
signin.login(LoginFragment.this.getActivity(), MainActivity.class).execute();
}
}).execute();
awsconfiguration.Json:
{
"UserAgent": "MobileHub/1.0",
"Version": "1.0",
"CredentialsProvider": {
"CognitoIdentity": {
"Default": {
"PoolId": "ap-south-1---------",
"Region": "ap-south-1"
}
}
},
"IdentityManager": {
"Default": {}
},
{
"GoogleSignIn": {
"ClientId-WebApp": "73699------------a4q.apps.googleusercontent.com",
"Permissions": "email,profile,openid"
}
}
Федеративный пул удостоверений - Google Федеративный пул удостоверений - OpenID Поставщики удостоверений IAM Мобильный хаб Google SignIn
1 ответ
Итак, наконец, я решил проблему, и это было то, что нигде не упоминается в Интернете.
Мое приложение для Android подписано с моим старым ключом SHA-1 на рабочем столе
поэтому для входа в систему нам нужно, чтобы сгенерированный Android-идентификатор ключа совпадает с тем, с которым подписано приложение.
А в консоли Google api Firebase раньше справлялся с этой проблемой самостоятельно, создавая правильную версию самостоятельно, но AWS является сторонним разработчиком, поэтому мне пришлось выяснить проблему.
Итак, на этот раз я использовал правильный идентификатор клиента Android в AWS, с которым приложение подписано, и это решило проблему!