Код ошибки 12500 что это

I am trying to integrate Google Sign In into my app. I don’t have a back-end server, I am just getting the details of the logged on Google Account to my app.

I first tried it by using Google Sign In Example but I got an error (No code changes made except for printing the stacktrace below). I just used the example SignInActivity as I don’t have a back-end server.

 Exception com.google.android.gms.common.api.ApiException: 12500: 
 at com.google.android.gms.common.internal.zzb.zzz(Unknown Source)
 at com.google.android.gms.auth.api.signin.GoogleSignIn.getSignedInAccountFromIntent(Unknown Source)
 at com.ewise.android.api.MainActivity.onActivityResult(SignInActivity.java:89)     at android.app.Activity.dispatchActivityResult(Activity.java:7010)
 at android.app.ActivityThread.deliverResults(ActivityThread.java:4187)
 at android.app.ActivityThread.handleSendResult(ActivityThread.java:4234)
 at android.app.ActivityThread.-wrap20(ActivityThread.java)
 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1584)
 at android.os.Handler.dispatchMessage(Handler.java:102)
 at android.os.Looper.loop(Looper.java:154)
 at android.app.ActivityThread.main(ActivityThread.java:6316)
 at java.lang.reflect.Method.invoke(Native Method)
 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:872)
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762)

Code

 public class SignInActivity extends AppCompatActivity implements
         View.OnClickListener {

     private static final String TAG = "SignInActivity";
     private static final int RC_SIGN_IN = 9001;

     private GoogleSignInClient mGoogleSignInClient;
     private TextView mStatusTextView;

     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);

         // Views
         mStatusTextView = findViewById(R.id.status);

         // Button listeners
         findViewById(R.id.sign_in_button).setOnClickListener(this);
         findViewById(R.id.sign_out_button).setOnClickListener(this);
         findViewById(R.id.disconnect_button).setOnClickListener(this);

         // [START configure_signin]
         // Configure sign-in to request the user's ID, email address, and basic
         // profile. ID and basic profile are included in DEFAULT_SIGN_IN.
         GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                 .requestEmail()
                 .build();
         // [END configure_signin]

         // [START build_client]
         // Build a GoogleSignInClient with the options specified by gso.
         mGoogleSignInClient = GoogleSignIn.getClient(this, gso);
         // [END build_client]

         // [START customize_button]
         // Set the dimensions of the sign-in button.
         SignInButton signInButton = findViewById(R.id.sign_in_button);
         signInButton.setSize(SignInButton.SIZE_STANDARD);
         signInButton.setColorScheme(SignInButton.COLOR_LIGHT);
         // [END customize_button]
     }

     @Override
     public void onStart() {
         super.onStart();

         // [START on_start_sign_in]
         // Check for existing Google Sign In account, if the user is already signed in
         // the GoogleSignInAccount will be non-null.
         GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(this);
         updateUI(account);
         // [END on_start_sign_in]
     }

     // [START onActivityResult]
     @Override
     public void onActivityResult(int requestCode, int resultCode, Intent data) {
         super.onActivityResult(requestCode, resultCode, data);

         // Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...);
         if (requestCode == RC_SIGN_IN) {
             // The Task returned from this call is always completed, no need to attach
             // a listener.
             Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
             handleSignInResult(task);
         }
     }
     // [END onActivityResult]

     // [START handleSignInResult]
     private void handleSignInResult(Task<GoogleSignInAccount> completedTask) {
         try {
             GoogleSignInAccount account = completedTask.getResult(ApiException.class);

             // Signed in successfully, show authenticated UI.
             updateUI(account);
         } catch (ApiException e) {
             // The ApiException status code indicates the detailed failure reason.
             // Please refer to the GoogleSignInStatusCodes class reference for more information.
             Log.w(TAG, "signInResult:failed code=" + e.getStatusCode());
             e.printStackTrace();
             updateUI(null);
         }
     }
     // [END handleSignInResult]

     // [START signIn]
     private void signIn() {
         Intent signInIntent = mGoogleSignInClient.getSignInIntent();
         startActivityForResult(signInIntent, RC_SIGN_IN);
     }
     // [END signIn]

     // [START signOut]
     private void signOut() {
         mGoogleSignInClient.signOut()
                 .addOnCompleteListener(this, new OnCompleteListener<Void>() {
                     @Override
                     public void onComplete(@NonNull Task<Void> task) {
                         // [START_EXCLUDE]
                         updateUI(null);
                         // [END_EXCLUDE]
                     }
                 });
     }
     // [END signOut]

     // [START revokeAccess]
     private void revokeAccess() {
         mGoogleSignInClient.revokeAccess()
                 .addOnCompleteListener(this, new OnCompleteListener<Void>() {
                     @Override
                     public void onComplete(@NonNull Task<Void> task) {
                         // [START_EXCLUDE]
                         updateUI(null);
                         // [END_EXCLUDE]
                     }
                 });
     }
     // [END revokeAccess]

     private void updateUI(@Nullable GoogleSignInAccount account) {
         if (account != null) {
             mStatusTextView.setText(getString(R.string.signed_in_fmt, account.getDisplayName()));

             findViewById(R.id.sign_in_button).setVisibility(View.GONE);
             findViewById(R.id.sign_out_and_disconnect).setVisibility(View.VISIBLE);
         } else {
             mStatusTextView.setText(R.string.signed_out);

             findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE);
             findViewById(R.id.sign_out_and_disconnect).setVisibility(View.GONE);
         }
     }

     @Override
     public void onClick(View v) {
         switch (v.getId()) {
             case R.id.sign_in_button:
                 signIn();
                 break;
             case R.id.sign_out_button:
                 signOut();
                 break;
             case R.id.disconnect_button:
                 revokeAccess();
                 break;
         }
     }
  }

From what I read, the issue could be caused by SHA1 Generation.

I followed the complete guide but apparently it’s not working.

I copied the SHA1 from gradle signingReport

Variant: debug
Config: debug
Store: /Users/user/.android/debug.keystore
Alias: AndroidDebugKey
MD5: A3:16:3F:43:75:FE:07:62:6D:8D:CC:DD:21:9F:FA:1A
SHA1: 7B:21:26:7F:D8:18:BB:0E:36:1C:82:DD:B7:28:5F:C1:2F:5C:E4:EA
Valid until: Saturday, August 31, 2047
----------
Variant: release
Config: none
----------
Variant: debugAndroidTest
Config: debug
Store: /Users/user/.android/debug.keystore
Alias: AndroidDebugKey
MD5: A3:16:3F:43:75:FE:07:62:6D:8D:CC:DD:21:9F:FA:1A
SHA1: 7B:21:26:7F:D8:18:BB:0E:36:1C:82:DD:B7:28:5F:C1:2F:5C:E4:EA
Valid until: Saturday, August 31, 2047
----------
Variant: debugUnitTest
Config: debug
Store: /Users/user/.android/debug.keystore
Alias: AndroidDebugKey
MD5: A3:16:3F:43:75:FE:07:62:6D:8D:CC:DD:21:9F:FA:1A
SHA1: 7B:21:26:7F:D8:18:BB:0E:36:1C:82:DD:B7:28:5F:C1:2F:5C:E4:EA
Valid until: Saturday, August 31, 2047

what could be the possible cause of this?

Thanks

P.S. Could this be a possible cause?

Google Play services out of date.  Requires 11720000 but found 10932470

Я пытаюсь интегрировать Google Sign In в свое приложение. У меня нет серверного сервера, я просто получаю информацию о зарегистрированном аккаунте Google в своем приложении.

Сначала я попробовал его, используя Пример входа в Google, но у меня возникла ошибка (никаких изменений кода не было, кроме печати стека). Я просто использовал пример SignInActivity, поскольку у меня нет серверного сервера.

 Exception com.google.android.gms.common.api.ApiException: 12500: 
 at com.google.android.gms.common.internal.zzb.zzz(Unknown Source)
 at com.google.android.gms.auth.api.signin.GoogleSignIn.getSignedInAccountFromIntent(Unknown Source)
 at com.ewise.android.api.MainActivity.onActivityResult(SignInActivity.java:89)     at android.app.Activity.dispatchActivityResult(Activity.java:7010)
 at android.app.ActivityThread.deliverResults(ActivityThread.java:4187)
 at android.app.ActivityThread.handleSendResult(ActivityThread.java:4234)
 at android.app.ActivityThread.-wrap20(ActivityThread.java)
 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1584)
 at android.os.Handler.dispatchMessage(Handler.java:102)
 at android.os.Looper.loop(Looper.java:154)
 at android.app.ActivityThread.main(ActivityThread.java:6316)
 at java.lang.reflect.Method.invoke(Native Method)
 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:872)
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762)

код

 public class SignInActivity extends AppCompatActivity implements
         View.OnClickListener {

     private static final String TAG = "SignInActivity";
     private static final int RC_SIGN_IN = 9001;

     private GoogleSignInClient mGoogleSignInClient;
     private TextView mStatusTextView;

     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);

         // Views
         mStatusTextView = findViewById(R.id.status);

         // Button listeners
         findViewById(R.id.sign_in_button).setOnClickListener(this);
         findViewById(R.id.sign_out_button).setOnClickListener(this);
         findViewById(R.id.disconnect_button).setOnClickListener(this);

         // [START configure_signin]
         // Configure sign-in to request the user ID, email address, and basic
         // profile. ID and basic profile are included in DEFAULT_SIGN_IN.
         GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                 .requestEmail()
                 .build();
         // [END configure_signin]

         // [START build_client]
         // Build a GoogleSignInClient with the options specified by gso.
         mGoogleSignInClient = GoogleSignIn.getClient(this, gso);
         // [END build_client]

         // [START customize_button]
         // Set the dimensions of the sign-in button.
         SignInButton signInButton = findViewById(R.id.sign_in_button);
         signInButton.setSize(SignInButton.SIZE_STANDARD);
         signInButton.setColorScheme(SignInButton.COLOR_LIGHT);
         // [END customize_button]
     }

     @Override
     public void onStart() {
         super.onStart();

         // [START on_start_sign_in]
         // Check for existing Google Sign In account, if the user is already signed in
         // the GoogleSignInAccount will be non-null.
         GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(this);
         updateUI(account);
         // [END on_start_sign_in]
     }

     // [START onActivityResult]
     @Override
     public void onActivityResult(int requestCode, int resultCode, Intent data) {
         super.onActivityResult(requestCode, resultCode, data);

         // Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...);
         if (requestCode == RC_SIGN_IN) {
             // The Task returned from this call is always completed, no need to attach
             // a listener.
             Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
             handleSignInResult(task);
         }
     }
     // [END onActivityResult]

     // [START handleSignInResult]
     private void handleSignInResult(Task<GoogleSignInAccount> completedTask) {
         try {
             GoogleSignInAccount account = completedTask.getResult(ApiException.class);

             // Signed in successfully, show authenticated UI.
             updateUI(account);
         } catch (ApiException e) {
             // The ApiException status code indicates the detailed failure reason.
             // Please refer to the GoogleSignInStatusCodes class reference for more information.
             Log.w(TAG, "signInResult:failed code=" + e.getStatusCode());
             e.printStackTrace();
             updateUI(null);
         }
     }
     // [END handleSignInResult]

     // [START signIn]
     private void signIn() {
         Intent signInIntent = mGoogleSignInClient.getSignInIntent();
         startActivityForResult(signInIntent, RC_SIGN_IN);
     }
     // [END signIn]

     // [START signOut]
     private void signOut() {
         mGoogleSignInClient.signOut()
                 .addOnCompleteListener(this, new OnCompleteListener<Void>() {
                     @Override
                     public void onComplete(@NonNull Task<Void> task) {
                         // [START_EXCLUDE]
                         updateUI(null);
                         // [END_EXCLUDE]
                     }
                 });
     }
     // [END signOut]

     // [START revokeAccess]
     private void revokeAccess() {
         mGoogleSignInClient.revokeAccess()
                 .addOnCompleteListener(this, new OnCompleteListener<Void>() {
                     @Override
                     public void onComplete(@NonNull Task<Void> task) {
                         // [START_EXCLUDE]
                         updateUI(null);
                         // [END_EXCLUDE]
                     }
                 });
     }
     // [END revokeAccess]

     private void updateUI(@Nullable GoogleSignInAccount account) {
         if (account != null) {
             mStatusTextView.setText(getString(R.string.signed_in_fmt, account.getDisplayName()));

             findViewById(R.id.sign_in_button).setVisibility(View.GONE);
             findViewById(R.id.sign_out_and_disconnect).setVisibility(View.VISIBLE);
         } else {
             mStatusTextView.setText(R.string.signed_out);

             findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE);
             findViewById(R.id.sign_out_and_disconnect).setVisibility(View.GONE);
         }
     }

     @Override
     public void onClick(View v) {
         switch (v.getId()) {
             case R.id.sign_in_button:
                 signIn();
                 break;
             case R.id.sign_out_button:
                 signOut();
                 break;
             case R.id.disconnect_button:
                 revokeAccess();
                 break;
         }
     }
  }

Из того, что я прочитал, проблема может быть вызвана SHA1 Generation.

Я выполнил полный руководство, но, по-видимому, он не работает.

Я скопировал SHA1 из gradle signedReport

Variant: debug
Config: debug
Store: /Users/user/.android/debug.keystore
Alias: AndroidDebugKey
MD5: A3:16:3F:43:75:FE:07:62:6D:8D:CC:DD:21:9F:FA:1A
SHA1: 7B:21:26:7F:D8:18:BB:0E:36:1C:82:DD:B7:28:5F:C1:2F:5C:E4:EA
Valid until: Saturday, August 31, 2047
----------
Variant: release
Config: none
----------
Variant: debugAndroidTest
Config: debug
Store: /Users/user/.android/debug.keystore
Alias: AndroidDebugKey
MD5: A3:16:3F:43:75:FE:07:62:6D:8D:CC:DD:21:9F:FA:1A
SHA1: 7B:21:26:7F:D8:18:BB:0E:36:1C:82:DD:B7:28:5F:C1:2F:5C:E4:EA
Valid until: Saturday, August 31, 2047
----------
Variant: debugUnitTest
Config: debug
Store: /Users/user/.android/debug.keystore
Alias: AndroidDebugKey
MD5: A3:16:3F:43:75:FE:07:62:6D:8D:CC:DD:21:9F:FA:1A
SHA1: 7B:21:26:7F:D8:18:BB:0E:36:1C:82:DD:B7:28:5F:C1:2F:5C:E4:EA
Valid until: Saturday, August 31, 2047

что может быть причиной этого?

Спасибо

P.S. Может ли это быть возможной причиной?

Google Play services out of date.  Requires 11720000 but found 10932470

Я пытаюсь интегрировать Google Sign In в свое приложение. У меня нет внутреннего сервера, я просто передаю данные о своей учетной записи Google в свое приложение.

Сначала я попробовал его, используя пример входа в Google, но Я получил ошибку (без изменений кода, за исключением печати стека трассировки ниже). Я просто использовал пример SignInActivity, так как у меня нет внутреннего сервера.

 Exception com.google.android.gms.common.api.ApiException: 12500: 
 at com.google.android.gms.common.internal.zzb.zzz(Unknown Source)
 at com.google.android.gms.auth.api.signin.GoogleSignIn.getSignedInAccountFromIntent(Unknown Source)
 at com.ewise.android.api.MainActivity.onActivityResult(SignInActivity.java:89)     at android.app.Activity.dispatchActivityResult(Activity.java:7010)
 at android.app.ActivityThread.deliverResults(ActivityThread.java:4187)
 at android.app.ActivityThread.handleSendResult(ActivityThread.java:4234)
 at android.app.ActivityThread.-wrap20(ActivityThread.java)
 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1584)
 at android.os.Handler.dispatchMessage(Handler.java:102)
 at android.os.Looper.loop(Looper.java:154)
 at android.app.ActivityThread.main(ActivityThread.java:6316)
 at java.lang.reflect.Method.invoke(Native Method)
 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:872)
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762)

Код

 public class SignInActivity extends AppCompatActivity implements
         View.OnClickListener {

     private static final String TAG = "SignInActivity";
     private static final int RC_SIGN_IN = 9001;

     private GoogleSignInClient mGoogleSignInClient;
     private TextView mStatusTextView;

     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);

         // Views
         mStatusTextView = findViewById(R.id.status);

         // Button listeners
         findViewById(R.id.sign_in_button).setOnClickListener(this);
         findViewById(R.id.sign_out_button).setOnClickListener(this);
         findViewById(R.id.disconnect_button).setOnClickListener(this);

         // [START configure_signin]
         // Configure sign-in to request the user's ID, email address, and basic
         // profile. ID and basic profile are included in DEFAULT_SIGN_IN.
         GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                 .requestEmail()
                 .build();
         // [END configure_signin]

         // [START build_client]
         // Build a GoogleSignInClient with the options specified by gso.
         mGoogleSignInClient = GoogleSignIn.getClient(this, gso);
         // [END build_client]

         // [START customize_button]
         // Set the dimensions of the sign-in button.
         SignInButton signInButton = findViewById(R.id.sign_in_button);
         signInButton.setSize(SignInButton.SIZE_STANDARD);
         signInButton.setColorScheme(SignInButton.COLOR_LIGHT);
         // [END customize_button]
     }

     @Override
     public void onStart() {
         super.onStart();

         // [START on_start_sign_in]
         // Check for existing Google Sign In account, if the user is already signed in
         // the GoogleSignInAccount will be non-null.
         GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(this);
         updateUI(account);
         // [END on_start_sign_in]
     }

     // [START onActivityResult]
     @Override
     public void onActivityResult(int requestCode, int resultCode, Intent data) {
         super.onActivityResult(requestCode, resultCode, data);

         // Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...);
         if (requestCode == RC_SIGN_IN) {
             // The Task returned from this call is always completed, no need to attach
             // a listener.
             Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
             handleSignInResult(task);
         }
     }
     // [END onActivityResult]

     // [START handleSignInResult]
     private void handleSignInResult(Task<GoogleSignInAccount> completedTask) {
         try {
             GoogleSignInAccount account = completedTask.getResult(ApiException.class);

             // Signed in successfully, show authenticated UI.
             updateUI(account);
         } catch (ApiException e) {
             // The ApiException status code indicates the detailed failure reason.
             // Please refer to the GoogleSignInStatusCodes class reference for more information.
             Log.w(TAG, "signInResult:failed code=" + e.getStatusCode());
             e.printStackTrace();
             updateUI(null);
         }
     }
     // [END handleSignInResult]

     // [START signIn]
     private void signIn() {
         Intent signInIntent = mGoogleSignInClient.getSignInIntent();
         startActivityForResult(signInIntent, RC_SIGN_IN);
     }
     // [END signIn]

     // [START signOut]
     private void signOut() {
         mGoogleSignInClient.signOut()
                 .addOnCompleteListener(this, new OnCompleteListener<Void>() {
                     @Override
                     public void onComplete(@NonNull Task<Void> task) {
                         // [START_EXCLUDE]
                         updateUI(null);
                         // [END_EXCLUDE]
                     }
                 });
     }
     // [END signOut]

     // [START revokeAccess]
     private void revokeAccess() {
         mGoogleSignInClient.revokeAccess()
                 .addOnCompleteListener(this, new OnCompleteListener<Void>() {
                     @Override
                     public void onComplete(@NonNull Task<Void> task) {
                         // [START_EXCLUDE]
                         updateUI(null);
                         // [END_EXCLUDE]
                     }
                 });
     }
     // [END revokeAccess]

     private void updateUI(@Nullable GoogleSignInAccount account) {
         if (account != null) {
             mStatusTextView.setText(getString(R.string.signed_in_fmt, account.getDisplayName()));

             findViewById(R.id.sign_in_button).setVisibility(View.GONE);
             findViewById(R.id.sign_out_and_disconnect).setVisibility(View.VISIBLE);
         } else {
             mStatusTextView.setText(R.string.signed_out);

             findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE);
             findViewById(R.id.sign_out_and_disconnect).setVisibility(View.GONE);
         }
     }

     @Override
     public void onClick(View v) {
         switch (v.getId()) {
             case R.id.sign_in_button:
                 signIn();
                 break;
             case R.id.sign_out_button:
                 signOut();
                 break;
             case R.id.disconnect_button:
                 revokeAccess();
                 break;
         }
     }
  }

Из того, что я прочитал, проблема может быть вызвана Поколение SHA1.

Я следовал полному руководству, но, видимо, оно не работает.

Я скопировал SHA1 из Gradle signatureReport

Variant: debug
Config: debug
Store: /Users/user/.android/debug.keystore
Alias: AndroidDebugKey
MD5: A3:16:3F:43:75:FE:07:62:6D:8D:CC:DD:21:9F:FA:1A
SHA1: 7B:21:26:7F:D8:18:BB:0E:36:1C:82:DD:B7:28:5F:C1:2F:5C:E4:EA
Valid until: Saturday, August 31, 2047
----------
Variant: release
Config: none
----------
Variant: debugAndroidTest
Config: debug
Store: /Users/user/.android/debug.keystore
Alias: AndroidDebugKey
MD5: A3:16:3F:43:75:FE:07:62:6D:8D:CC:DD:21:9F:FA:1A
SHA1: 7B:21:26:7F:D8:18:BB:0E:36:1C:82:DD:B7:28:5F:C1:2F:5C:E4:EA
Valid until: Saturday, August 31, 2047
----------
Variant: debugUnitTest
Config: debug
Store: /Users/user/.android/debug.keystore
Alias: AndroidDebugKey
MD5: A3:16:3F:43:75:FE:07:62:6D:8D:CC:DD:21:9F:FA:1A
SHA1: 7B:21:26:7F:D8:18:BB:0E:36:1C:82:DD:B7:28:5F:C1:2F:5C:E4:EA
Valid until: Saturday, August 31, 2047

Что может быть возможной причиной этого?

Благодарность

Постскриптум Может ли это быть возможной причиной?

Google Play services out of date.  Requires 11720000 but found 10932470

28 ответов

Лучший ответ

Просто обновите сервисы Google Play до последней версии (или 11720000 в этом случае). Если вы используете AVD, изображения Nexus 5 и 5X поддерживают Google Play. После запуска и запуска эмулятора перейдите в меню расширенных элементов управления> Google Play, а затем обновите.


38

Strauss
6 Дек 2017 в 05:40

для ошибки 12500 Необходимо добавить поддержку gmail только в настройках firebase, а для ошибки 10 добавить ssh-отпечаток в консоли firebase, как показано на рисунке.


40

Vijay
24 Май 2019 в 05:46

У меня возникла та же проблема после открытия проекта на другом компьютере (в другой Android Studio). В моем случае я решил это с помощью Firebase Assistant, который я использовал для первоначальной настройки Firebase. Откройте Firebase Assistant (Инструменты> Firebase) и выберите Аутентификация> Подключиться. Это переподключило проект к Firebase и обновило конфиги


1

allo
19 Дек 2018 в 15:55

Может также случиться, что компилятор cordova не сможет найти нужный файл хранилища ключей.

Решение . Перед выполнением ionic cordova build android укажите свойства подписи .

Шаг 1 . Создайте файл хранилища ключей отладки.

Выполнить команду

keytool -exportcert -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore

Использовать пароль: android

Шаг 2: скопируйте файл хранилища ключей (debug.keystore) из ~/.android в каталог platform/android вашего текущего проекта

Шаг 3: создайте файл с именем release-signing.properties в каталоге platform/android

Шаг 4: добавьте содержимое в файл

storeFile=debug.keystore
keyAlias=androiddebugkey
storePassword=android
keyPassword=android

Примечание. Это значения по умолчанию. Если вы указали свой псевдоним и пароль, используйте их соответственно.

Шаг 5 . Теперь постройте ionic cordova build android


1

Debojyoti
10 Ноя 2018 в 14:40

Перейдите к своему проекту в консоли Firebase, откройте «Настройки проекта» и добавьте туда отпечатки своих сертификатов SHA. Загрузите обновленный файл google-services.json и добавьте его в папку приложения Projects.

Это сработало для меня.

Firebase console Screenshot


4

ochs.tobi
20 Дек 2018 в 08:12

Кажется, ваш SHA1 перезаписан Google Play Store. Проверьте в своем магазине Google Play, панели запуска, под подписью приложения, посмотрите, есть ли в Google Play добавленный дополнительный SHA1.

И скопируйте, что SHA1, добавьте к вашему соответствующему месту, сделает работу.


11

Paul Zhang Ising
5 Ноя 2018 в 02:25

Я думаю, что ошибка произошла от неправильного SHA1. Пожалуйста, не забывайте, что SHA1 отличается между выпуском и режимом отладки в андроид студии. Вместо того, чтобы использовать keytool для получения SHA1, вы можете использовать проект Gradle -> Task -> android -> signatureReport в студии android (можете открыть его с помощью меню View -> Toolwindow -> gradle), чтобы получить релиз и отладку SHA1. После этого для простоты работы вам нужно создать 2 отдельных учетных данных с двумя SHA1 на облачной консоли Google (Google просто дает указание создать 1 с помощью выпуска SHA1, когда мы разрабатываем его, он не будет работать, поскольку он использует отладочный SHA1).


3

Bioz Nguyen
27 Ноя 2018 в 15:48

В моем случае, после добавления отпечатка пальца в консоль Firebase, он автоматически выбирается консолью разработчиков Google и показывает отпечатки пальцев. Но войти не получилось. Посмотрев каждый шаг, я понял, что Google перевернул мой пакет файлов манифеста, как этот com.xxxxxxxx.app. Но на самом деле это app.xxxxxxxx.com в консоли разработчика Google. Поэтому я удалил автоматически созданный отпечаток и добавил отпечаток с правильным именем пакета. БУМ !! . Это сработало.


0

Naroju
25 Янв 2019 в 12:10

В моем случае проблема заключалась в том, что в моем эмуляторе не было Play Store. Я сделал эмулятор (с именем API 23) через Visual Studio, потому что я также разрабатываю с использованием Xamarin.Forms, и в Диспетчере устройств Visual Studio Android вы можете выбрать, должен ли ваш эмулятор иметь Google Play Store.

Пришлось создать эмулятор через Android Studio AVD и убедиться, что у него есть Play Store:

enter image description here


0

Reed
12 Янв 2020 в 11:05

Я застрял на некоторое время.

Убедитесь, что эти шаги выполнены

Correct SHA key is saved on Firebase Console.
Valid reversed client id.
from fcm console=>select app=>from authentication=>enable google sign-in method


1

Sumit Kumawat
8 Янв 2020 в 11:10

Я застрял в проблеме входа в Google с 2-х недель, наконец-то хорошо разобрался. Давайте мне объяснить причину. Проблема была связана с пожарной базой. В Firebase они упомянули поле «поддержка по электронной почте» как необязательное. Но как только я добавил его (любой из ваших личных писем), проблема была решена, и я получил ответ. Если вы получили ошибку 12501, то это связано с настройками в вашем аккаунте Google.


1

Kevin
3 Июл 2019 в 06:11

Проверьте, добавлены ли отпечатки SHA-1 в настройки проекта Firebase. Если нет, найдите отпечаток SHA-1, используя

https://developers.google.com/android/guides/client-auth

Также найдите отпечаток ключа разблокировки SHA-1, используя

keytool -list -v -keystore <keystore path>

Удалите <keystore path> с путем к хранилищу ключей.

Затем добавьте оба отпечатка SHA-1 в настройки проектов Firebase.

NB. Не забудьте заменить google-services.json обновленным google-services.json новыми отпечатками пальцев. Я потерял два дня на этом.

Пока отлаживать

Студия Android автоматически генерирует ~/.android/debug.keystore при первом отладить сборку и использовать ее для подписи приложения.

Чтобы запустить SHA-1 (пароль android) (doc) ) :

keytool -exportcert -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore

Это SHA-1 необходимо добавить в настройки приложения в firebase, чтобы разрешить использование возможностей входа в Google при тестировании отладочной сборки.


43

michaelbn
22 Янв 2019 в 10:19

Ошибка PlatformException (sign_in_failed, com.google.android.gms.common.api.ApiException: 12500:, ноль)

Эту ошибку 12500 можно устранить, добавив адрес электронной почты службы поддержки . на ваш проект в настройках проекта. Открыть ссылку https://console.firebase.google.com/

Выберите свой проект и откройте вкладку настроек.

Укажите действующий адрес электронной почты службы поддержки и перезапустите приложение.

enter image description here


97

Maddu Swaroop
25 Фев 2020 в 05:25

Если есть еще кто-то с подобной проблемой, если вы добавляете пользовательские области, убедитесь, что это допустимая область. В моем случае я смешал области Facebook с областями Google и потратил некоторое время, чтобы понять это!


5

Paulo Taylor
11 Апр 2018 в 10:53

Я использую Аутентификацию Firebase. Мой SHA-1 был указан правильно, идентификатор клиента также был правильным, но я все еще получал 12500.

Оказалось, что моя проблема заключалась в том, что я не указал адрес электронной почты службы поддержки в настройках своего проекта. (Настройки -> вкладка Общие -> раздел Ваш проект (Общие настройки)).


5

algrid
24 Май 2019 в 16:00

Сначала убедитесь, что вы зарегистрировали свое приложение в консоли разработчиков Google

Убедитесь, что в вашем приложении Firebase есть ключи debug и release. Если эта ошибка появляется в производственной среде, добавьте SHA-1 release key в базовое приложение. Если он появится в разработке, добавьте SHA-1 debug key.

Where to add SHA-1 finger print

Получение ключа отладки / выпуска:

keytool -exportcert -list -v -alias [your alias] -keystore [path/to/debug or release.keystore]

Обязательно загрузите обновленное google-services.json в свое приложение.


3

Denn
7 Янв 2019 в 09:00

Для меня проблема заключалась в использовании ClientID ‘release’ с моим настроенным на отладку приложением. Убедитесь, что у вас есть ключи выпуска и отладки, использующие каждый SHA-1 соответственно.


2

peresisUser
10 Окт 2018 в 07:12

Когда ваше приложение проходит проверку подлинности с помощью внутреннего сервера или обращается к API Google с вашего внутреннего сервера, вы должны передать идентификатор клиента OAuth 2.0, созданный для вашего сервера, в метод requestIdToken при создании объекта GoogleSignInOptions для доступа к основной информации профиля пользователя. , Кроме того, не забудьте отправить электронное письмо в службу поддержки на экране согласия OAuth, который находится на странице учетных данных в консоли API.


2

Sridhar Shanmugam
5 Янв 2020 в 15:36

Убедитесь, что вы правильно настроили следующие вещи:

  1. Сгенерируйте идентификатор клиента в вашем проекте Google.
  2. Укажите правильный ключ SHA-1 для этого идентификатора клиента. (отладка / выпуск)
  3. Укажите правильное имя пакета для этого идентификатора клиента.
  4. Убедитесь, что вы сгенерировали идентификатор клиента в файле strings.xml, google-services.json или credentials.json.


0

Chintan Shah
14 Дек 2018 в 08:04

https://developers.google.com/identity/sign-in/ Android / вход следуйте этой документации API, но имейте в виду, что внутри WEB_CLIENT_ID используйте значение идентификатора клиента, которое генерируется в файле google-services.json.

class MainActivity : AppCompatActivity(), GoogleApiClient.OnConnectionFailedListener {
private val TAG = "JSAGoogleSignIn"
private val REQUEST_CODE_SIGN_IN = 1234
private val WEB_CLIENT_ID = "354298333018-XXXXXXXXXXXXXXXXXXXXXXX.apps.googleusercontent.com"
private var mAuth: FirebaseAuth? = null

private var mGoogleApiClient: GoogleApiClient? = null
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    var txt_register = findViewById<TextView>(R.id.txt_register)
    txt_register.setOnClickListener {
        var intent = Intent(this@MainActivity, RegisterActivity::class.java)
        finish()
        startActivity(intent)
    }
    val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestIdToken(WEB_CLIENT_ID)
            .requestEmail()
            .build()
    mGoogleApiClient = GoogleApiClient.Builder(this)
            .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */)
            .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
            .build()

    mAuth = FirebaseAuth.getInstance()
    sign_in_button.setOnClickListener {
        val intent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient)
        startActivityForResult(intent, REQUEST_CODE_SIGN_IN)
    }

}


override fun onConnectionFailed(p0: ConnectionResult) {
    TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}


private fun updateUI(user: FirebaseUser?) {
    if (user != null) {
        Log.e("Email", "Value" + user.email)
    }

}

fun signIn() {

}

override fun onStart() {
    super.onStart()
    val currentUser = mAuth!!.currentUser
    updateUI(currentUser)
}

public override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)

    // Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...);
    if (requestCode == REQUEST_CODE_SIGN_IN) {
        val result = Auth.GoogleSignInApi.getSignInResultFromIntent(data)
        if (result.isSuccess) {
            // successful -> authenticate with Firebase
            val account = result.signInAccount
            firebaseAuthWithGoogle(account!!)
        } else {
            // failed -> update UI
            updateUI(null)
            Toast.makeText(applicationContext, "SignIn: failed!" + result.status,
                    Toast.LENGTH_SHORT).show()
        }
    }
}

private fun firebaseAuthWithGoogle(acct: GoogleSignInAccount) {
    Log.e(TAG, "firebaseAuthWithGoogle():" + acct.id!!)

    val credential = GoogleAuthProvider.getCredential(acct.idToken, null)
    mAuth!!.signInWithCredential(credential)
            .addOnCompleteListener(this) { task ->
                if (task.isSuccessful) {
                    // Sign in success
                    Log.e(TAG, "signInWithCredential: Success!")
                    val user = mAuth!!.currentUser
                    updateUI(user)
                } else {
                    // Sign in fails
                    Log.w(TAG, "signInWithCredential: Failed!", task.exception)
                    Toast.makeText(applicationContext, "Authentication failed!",
                            Toast.LENGTH_SHORT).show()
                    updateUI(null)
                }
            }
}


0

Vajani Kishan
23 Янв 2019 в 07:47

В моем случае я работал над непроизводственным приложением, проблема заключалась в том, что при создании проекта в консоли Firebase возникали проблемы с синхронизацией ключей SHA-1 назад и вперед из консолей разработчиков Firebase и Google. Итак, я решил сначала создать проект в консоли разработчика Google, а затем выбрать его при создании нового проекта в консоли Firebase.

Для этого я также написал учебник, который может вам помочь.


0

Zain
14 Авг 2019 в 04:32

В моем случае эта ошибка возникла из-за того, что старшая команда удалила аутентификацию Android, так как кажется, что для аутентификации бэкэнда ключ Android не нужен. Таким образом, для входа в Google необходимы ключи Android и веб-клиента.


0

Himani Tank
22 Апр 2020 в 06:00

Попробуйте следующие варианты:

keytool -list -v -keystore C:\Users\MG\Desktop\test.jks -alias test

Он запрашивает пароль и просто введите пароль. Вы можете увидеть отпечатки пальцев SHA1, MD5.

enter image description here


-1

Zoe
5 Ноя 2018 в 16:49

Убедитесь, что ваш проект не должен содержать никаких специальных символов, включая числовые или любые другие символы (имя проекта должно быть простым, например, com.google.testproject).


0

Sekhon123
6 Авг 2019 в 05:44

Ошибка появилась у меня, когда опция Google не была включена, , как показано на изображении .

Это произошло, когда я сменил аккаунт Google и забыл включить опцию подключения к Google.


0

Yonibagi
14 Май 2019 в 09:24

В моем случае это из-за неправильного идентификатора клиента Google. Я изменяю свой ключ на ключ, указанный в google-services.json (под oauth_client объектом)


0

thuanle
25 Ноя 2018 в 10:55

Для работы входа в Google необходима электронная почта поддержки, а также все ссылки на проекты и конфиденциальность , в противном случае выдается 12500.

Установите его на https://console.developers.google.com/apis/credentials в в нижней части второй вкладки с именем «Экран согласия OAuth» — там вы найдете три ссылки, которые необходимо настроить.

Это не упоминается где-либо в руководствах Firebase.


40

zub0r
27 Дек 2019 в 11:04

Google Sign In Error 12500 is a common error faced by Android developers while implementing Google Sign In in their Android applications. This error occurs when the developer’s implementation of the Google Sign In API is incorrect and Google servers are unable to verify the client ID of the application. The error message usually appears as «The developer account that is associated with this client ID is not authorized to use the Google Sign In API.»

Method 1: Check the Configuration of Google API Console

If you are facing Google Sign In Error 12500 in your Android app, you can fix it by checking the configuration of your Google API Console. Follow the steps below to do so:

  1. Go to the Google API Console.

  2. Select your project from the top navigation bar.

  3. Click on the «Credentials» tab.

  4. Under «OAuth 2.0 Client IDs», find the client ID that corresponds to your Android app.

  5. Make sure that the «Signing-certificate fingerprint» field contains the SHA-1 fingerprint of the certificate used to sign the APK that you are testing.

  6. If the fingerprint is incorrect or missing, you need to add it. To do so, click on the «Edit» button next to the client ID.

  7. In the «Signing-certificate fingerprint» field, click on the «Add fingerprint» button.

  8. Enter the SHA-1 fingerprint of the certificate used to sign the APK that you are testing.

  9. Click on the «Save» button to save the changes.

  10. Finally, rebuild and run your app to test if the issue has been resolved.

// Example code to check and add fingerprint to Google API Console configuration
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
        .requestIdToken(getString(R.string.default_web_client_id))
        .requestEmail()
        .build();

GoogleSignInClient mGoogleSignInClient = GoogleSignIn.getClient(this, gso);

// Check if the fingerprint is added to the Google API Console configuration
PackageManager pm = getPackageManager();
String packageName = getPackageName();
int flags = PackageManager.GET_SIGNATURES;
PackageInfo packageInfo = null;
try {
    packageInfo = pm.getPackageInfo(packageName, flags);
} catch (PackageManager.NameNotFoundException e) {
    e.printStackTrace();
}
Signature[] signatures = packageInfo.signatures;
byte[] cert = signatures[0].toByteArray();
InputStream input = new ByteArrayInputStream(cert);
CertificateFactory cf = CertificateFactory.getInstance("X509");
X509Certificate c = (X509Certificate) cf.generateCertificate(input);
String hexString = bytesToHexString(c.getEncoded());

// If the fingerprint is missing, add it to the Google API Console configuration
if (!hexString.equals("YOUR_SHA1_FINGERPRINT")) {
    GoogleApiClient googleApiClient = new GoogleApiClient.Builder(this)
            .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
            .build();

    PendingResult<Status> pendingResult = Auth.GoogleSignInApi.revokeAccess(googleApiClient);
    pendingResult.setResultCallback(new ResultCallback<Status>() {
        @Override
        public void onResult(@NonNull Status status) {
            // Revoke access and add the fingerprint
            GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                    .requestIdToken(getString(R.string.default_web_client_id))
                    .requestEmail()
                    .requestServerAuthCode(getString(R.string.default_web_client_id))
                    .build();

            GoogleSignInClient mGoogleSignInClient = GoogleSignIn.getClient(MainActivity.this, gso);

            mGoogleSignInClient.silentSignIn().addOnCompleteListener(new OnCompleteListener<GoogleSignInAccount>() {
                @Override
                public void onComplete(@NonNull Task<GoogleSignInAccount> task) {
                    if (task.isSuccessful()) {
                        GoogleSignInAccount account = task.getResult();
                        String idToken = account.getIdToken();
                        String serverAuthCode = account.getServerAuthCode();
                        // Add the fingerprint to the Google API Console configuration
                        // ...
                    } else {
                        // Handle sign in failure
                        // ...
                    }
                }
            });
        }
    });
}

That’s it! By following the above steps and using the provided code examples, you should be able to fix Google Sign In Error 12500 in your Android app by checking the configuration of your Google API Console.

Method 2: Check the SHA-1 Fingerprint and Package Name

To fix Google Sign In error 12500 on Android, you can check the SHA-1 fingerprint and package name. Here are the steps to do it:

  1. Open the Google Developers Console and select your project.
  2. Click on the «Credentials» tab and find the «OAuth 2.0 client IDs» section.
  3. Look for the client ID that you are using in your Android app and click on it.
  4. Scroll down to the «Signing-certificate fingerprint» section and click on «SHA-1».
  5. Copy the SHA-1 fingerprint.
  6. Open your Android project in Android Studio.
  7. In the «Gradle» tab on the right side of the screen, expand the «Tasks» menu and double-click on «android».
  8. Expand the «signingReport» task and double-click on «signingReport».
  9. Wait for the task to finish and look for the «SHA1» value in the output.
  10. Compare the SHA-1 fingerprint from step 5 with the SHA-1 value from step 9.
  11. If they don’t match, update the SHA-1 fingerprint in the Google Developers Console.

Here is an example code to get the SHA-1 fingerprint in Android:

try {
    PackageInfo info = getPackageManager().getPackageInfo(
            "com.example.app",
            PackageManager.GET_SIGNATURES);
    for (Signature signature : info.signatures) {
        MessageDigest md = MessageDigest.getInstance("SHA");
        md.update(signature.toByteArray());
        String sha1 = Base64.encodeToString(md.digest(), Base64.NO_WRAP);
        Log.d("SHA1", sha1);
    }
} catch (PackageManager.NameNotFoundException e) {
    e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
    e.printStackTrace();
}

And here is an example code to update the SHA-1 fingerprint in the Google Developers Console:

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
        .requestIdToken(getString(R.string.default_web_client_id))
        .requestEmail()
        .build();

GoogleSignInClient mGoogleSignInClient = GoogleSignIn.getClient(this, gso);

mGoogleSignInClient.silentSignIn().addOnSuccessListener(new OnSuccessListener<GoogleSignInAccount>() {
    @Override
    public void onSuccess(GoogleSignInAccount googleSignInAccount) {
        String idToken = googleSignInAccount.getIdToken();
        // Update the SHA-1 fingerprint in the Google Developers Console with the new idToken.
    }
});

Method 3: Check the Google Play Services Version

To fix the Google Sign In error 12500 in Android, you can check the Google Play Services version. Here are the steps to do it:

  1. Add the Google Play Services dependency to your app build.gradle file:
dependencies {
    implementation 'com.google.android.gms:play-services-auth:19.2.0'
}
  1. Check if the Google Play Services is available on the device:
GoogleApiAvailability api = GoogleApiAvailability.getInstance();
int resultCode = api.isGooglePlayServicesAvailable(context);
if (resultCode != ConnectionResult.SUCCESS) {
    if (api.isUserResolvableError(resultCode)) {
        api.getErrorDialog(activity, resultCode, REQUEST_GOOGLE_PLAY_SERVICES).show();
    } else {
        Toast.makeText(context, "Google Play Services is not available", Toast.LENGTH_LONG).show();
    }
    return false;
}
return true;
  1. Check if the Google Play Services version is compatible with your app:
int minVersion = GoogleApiAvailability.GOOGLE_PLAY_SERVICES_VERSION_CODE;
int currentVersion = api.getApkVersion(context);
if (currentVersion < minVersion) {
    Toast.makeText(context, "Google Play Services is out of date", Toast.LENGTH_LONG).show();
    return false;
}
return true;
  1. If the Google Play Services version is compatible, you can proceed with the Google Sign In:
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
        .requestIdToken(getString(R.string.default_web_client_id))
        .requestEmail()
        .build();

GoogleSignInClient mGoogleSignInClient = GoogleSignIn.getClient(this, gso);

Intent signInIntent = mGoogleSignInClient.getSignInIntent();
startActivityForResult(signInIntent, RC_SIGN_IN);

That’s it! By checking the Google Play Services version, you can fix the Google Sign In error 12500 in Android.

Method 4: Check the Google Sign In API Implementation in Code

To fix the Google Sign In error 12500 in Android, you can check the Google Sign In API implementation in code. Here are the steps to do it:

  1. Make sure you have added the Google Sign In API dependency in your app-level build.gradle file:
implementation 'com.google.android.gms:play-services-auth:19.0.0'
  1. Check if you have added the SHA-1 fingerprint of your debug/release keystore in the Firebase console for your project. To get the SHA-1 fingerprint, run the following command in the terminal:
keytool -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore
  1. In your LoginActivity or SignInActivity, add the following code to initialize the Google Sign In API:
private GoogleSignInClient mGoogleSignInClient;

private void initGoogleSignIn() {
    GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestIdToken(getString(R.string.default_web_client_id))
            .requestEmail()
            .build();

    mGoogleSignInClient = GoogleSignIn.getClient(this, gso);
}
  1. Override the onActivityResult method in your LoginActivity or SignInActivity to handle the Google Sign In result:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == RC_SIGN_IN) {
        Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
        try {
            // Google Sign In was successful, authenticate with Firebase
            GoogleSignInAccount account = task.getResult(ApiException.class);
            firebaseAuthWithGoogle(account.getIdToken());
        } catch (ApiException e) {
            // Google Sign In failed, update UI appropriately
            Log.w(TAG, "Google sign in failed", e);
        }
    }
}
  1. Call the signIn() method when the user clicks the Google Sign In button:
private void signIn() {
    Intent signInIntent = mGoogleSignInClient.getSignInIntent();
    startActivityForResult(signInIntent, RC_SIGN_IN);
}
  1. Finally, add the following code to authenticate with Firebase using the Google Sign In token:
private void firebaseAuthWithGoogle(String idToken) {
    AuthCredential credential = GoogleAuthProvider.getCredential(idToken, null);
    mAuth.signInWithCredential(credential)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (task.isSuccessful()) {
                        // Sign in success, update UI with the signed-in user's information
                        Log.d(TAG, "signInWithCredential:success");
                        FirebaseUser user = mAuth.getCurrentUser();
                        updateUI(user);
                    } else {
                        // If sign in fails, display a message to the user.
                        Log.w(TAG, "signInWithCredential:failure", task.getException());
                        Snackbar.make(findViewById(R.id.main_layout), "Authentication Failed.", Snackbar.LENGTH_SHORT).show();
                        updateUI(null);
                    }
                }
            });
}

That’s it! By checking the Google Sign In API implementation in code, you can fix the Google Sign In error 12500 in Android.

Я пытаюсь интегрировать Google Sign In в свое приложение. У меня нет внутреннего сервера, я просто передаю данные о своей учетной записи Google в свое приложение.

Сначала я попробовал его, используя пример входа в Google, но Я получил ошибку (без изменений кода, за исключением печати стека трассировки ниже). Я просто использовал пример SignInActivity, так как у меня нет внутреннего сервера.

 Exception com.google.android.gms.common.api.ApiException: 12500: 
 at com.google.android.gms.common.internal.zzb.zzz(Unknown Source)
 at com.google.android.gms.auth.api.signin.GoogleSignIn.getSignedInAccountFromIntent(Unknown Source)
 at com.ewise.android.api.MainActivity.onActivityResult(SignInActivity.java:89)     at android.app.Activity.dispatchActivityResult(Activity.java:7010)
 at android.app.ActivityThread.deliverResults(ActivityThread.java:4187)
 at android.app.ActivityThread.handleSendResult(ActivityThread.java:4234)
 at android.app.ActivityThread.-wrap20(ActivityThread.java)
 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1584)
 at android.os.Handler.dispatchMessage(Handler.java:102)
 at android.os.Looper.loop(Looper.java:154)
 at android.app.ActivityThread.main(ActivityThread.java:6316)
 at java.lang.reflect.Method.invoke(Native Method)
 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:872)
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762)

Код

 public class SignInActivity extends AppCompatActivity implements
         View.OnClickListener {

     private static final String TAG = "SignInActivity";
     private static final int RC_SIGN_IN = 9001;

     private GoogleSignInClient mGoogleSignInClient;
     private TextView mStatusTextView;

     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);

         // Views
         mStatusTextView = findViewById(R.id.status);

         // Button listeners
         findViewById(R.id.sign_in_button).setOnClickListener(this);
         findViewById(R.id.sign_out_button).setOnClickListener(this);
         findViewById(R.id.disconnect_button).setOnClickListener(this);

         // [START configure_signin]
         // Configure sign-in to request the user's ID, email address, and basic
         // profile. ID and basic profile are included in DEFAULT_SIGN_IN.
         GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                 .requestEmail()
                 .build();
         // [END configure_signin]

         // [START build_client]
         // Build a GoogleSignInClient with the options specified by gso.
         mGoogleSignInClient = GoogleSignIn.getClient(this, gso);
         // [END build_client]

         // [START customize_button]
         // Set the dimensions of the sign-in button.
         SignInButton signInButton = findViewById(R.id.sign_in_button);
         signInButton.setSize(SignInButton.SIZE_STANDARD);
         signInButton.setColorScheme(SignInButton.COLOR_LIGHT);
         // [END customize_button]
     }

     @Override
     public void onStart() {
         super.onStart();

         // [START on_start_sign_in]
         // Check for existing Google Sign In account, if the user is already signed in
         // the GoogleSignInAccount will be non-null.
         GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(this);
         updateUI(account);
         // [END on_start_sign_in]
     }

     // [START onActivityResult]
     @Override
     public void onActivityResult(int requestCode, int resultCode, Intent data) {
         super.onActivityResult(requestCode, resultCode, data);

         // Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...);
         if (requestCode == RC_SIGN_IN) {
             // The Task returned from this call is always completed, no need to attach
             // a listener.
             Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
             handleSignInResult(task);
         }
     }
     // [END onActivityResult]

     // [START handleSignInResult]
     private void handleSignInResult(Task<GoogleSignInAccount> completedTask) {
         try {
             GoogleSignInAccount account = completedTask.getResult(ApiException.class);

             // Signed in successfully, show authenticated UI.
             updateUI(account);
         } catch (ApiException e) {
             // The ApiException status code indicates the detailed failure reason.
             // Please refer to the GoogleSignInStatusCodes class reference for more information.
             Log.w(TAG, "signInResult:failed code=" + e.getStatusCode());
             e.printStackTrace();
             updateUI(null);
         }
     }
     // [END handleSignInResult]

     // [START signIn]
     private void signIn() {
         Intent signInIntent = mGoogleSignInClient.getSignInIntent();
         startActivityForResult(signInIntent, RC_SIGN_IN);
     }
     // [END signIn]

     // [START signOut]
     private void signOut() {
         mGoogleSignInClient.signOut()
                 .addOnCompleteListener(this, new OnCompleteListener<Void>() {
                     @Override
                     public void onComplete(@NonNull Task<Void> task) {
                         // [START_EXCLUDE]
                         updateUI(null);
                         // [END_EXCLUDE]
                     }
                 });
     }
     // [END signOut]

     // [START revokeAccess]
     private void revokeAccess() {
         mGoogleSignInClient.revokeAccess()
                 .addOnCompleteListener(this, new OnCompleteListener<Void>() {
                     @Override
                     public void onComplete(@NonNull Task<Void> task) {
                         // [START_EXCLUDE]
                         updateUI(null);
                         // [END_EXCLUDE]
                     }
                 });
     }
     // [END revokeAccess]

     private void updateUI(@Nullable GoogleSignInAccount account) {
         if (account != null) {
             mStatusTextView.setText(getString(R.string.signed_in_fmt, account.getDisplayName()));

             findViewById(R.id.sign_in_button).setVisibility(View.GONE);
             findViewById(R.id.sign_out_and_disconnect).setVisibility(View.VISIBLE);
         } else {
             mStatusTextView.setText(R.string.signed_out);

             findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE);
             findViewById(R.id.sign_out_and_disconnect).setVisibility(View.GONE);
         }
     }

     @Override
     public void onClick(View v) {
         switch (v.getId()) {
             case R.id.sign_in_button:
                 signIn();
                 break;
             case R.id.sign_out_button:
                 signOut();
                 break;
             case R.id.disconnect_button:
                 revokeAccess();
                 break;
         }
     }
  }

Из того, что я прочитал, проблема может быть вызвана Поколение SHA1.

Я следовал полному руководству, но, видимо, оно не работает.

Я скопировал SHA1 из Gradle signatureReport

Variant: debug
Config: debug
Store: /Users/user/.android/debug.keystore
Alias: AndroidDebugKey
MD5: A3:16:3F:43:75:FE:07:62:6D:8D:CC:DD:21:9F:FA:1A
SHA1: 7B:21:26:7F:D8:18:BB:0E:36:1C:82:DD:B7:28:5F:C1:2F:5C:E4:EA
Valid until: Saturday, August 31, 2047
----------
Variant: release
Config: none
----------
Variant: debugAndroidTest
Config: debug
Store: /Users/user/.android/debug.keystore
Alias: AndroidDebugKey
MD5: A3:16:3F:43:75:FE:07:62:6D:8D:CC:DD:21:9F:FA:1A
SHA1: 7B:21:26:7F:D8:18:BB:0E:36:1C:82:DD:B7:28:5F:C1:2F:5C:E4:EA
Valid until: Saturday, August 31, 2047
----------
Variant: debugUnitTest
Config: debug
Store: /Users/user/.android/debug.keystore
Alias: AndroidDebugKey
MD5: A3:16:3F:43:75:FE:07:62:6D:8D:CC:DD:21:9F:FA:1A
SHA1: 7B:21:26:7F:D8:18:BB:0E:36:1C:82:DD:B7:28:5F:C1:2F:5C:E4:EA
Valid until: Saturday, August 31, 2047

Что может быть возможной причиной этого?

Благодарность

Постскриптум Может ли это быть возможной причиной?

Google Play services out of date.  Requires 11720000 but found 10932470

28 ответов

Лучший ответ

Просто обновите сервисы Google Play до последней версии (или 11720000 в этом случае). Если вы используете AVD, изображения Nexus 5 и 5X поддерживают Google Play. После запуска и запуска эмулятора перейдите в меню расширенных элементов управления> Google Play, а затем обновите.


38

Strauss
6 Дек 2017 в 05:40

для ошибки 12500 Необходимо добавить поддержку gmail только в настройках firebase, а для ошибки 10 добавить ssh-отпечаток в консоли firebase, как показано на рисунке.


40

Vijay
24 Май 2019 в 05:46

У меня возникла та же проблема после открытия проекта на другом компьютере (в другой Android Studio). В моем случае я решил это с помощью Firebase Assistant, который я использовал для первоначальной настройки Firebase. Откройте Firebase Assistant (Инструменты> Firebase) и выберите Аутентификация> Подключиться. Это переподключило проект к Firebase и обновило конфиги


1

allo
19 Дек 2018 в 15:55

Может также случиться, что компилятор cordova не сможет найти нужный файл хранилища ключей.

Решение . Перед выполнением ionic cordova build android укажите свойства подписи .

Шаг 1 . Создайте файл хранилища ключей отладки.

Выполнить команду

keytool -exportcert -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore

Использовать пароль: android

Шаг 2: скопируйте файл хранилища ключей (debug.keystore) из ~/.android в каталог platform/android вашего текущего проекта

Шаг 3: создайте файл с именем release-signing.properties в каталоге platform/android

Шаг 4: добавьте содержимое в файл

storeFile=debug.keystore
keyAlias=androiddebugkey
storePassword=android
keyPassword=android

Примечание. Это значения по умолчанию. Если вы указали свой псевдоним и пароль, используйте их соответственно.

Шаг 5 . Теперь постройте ionic cordova build android


1

Debojyoti
10 Ноя 2018 в 14:40

Перейдите к своему проекту в консоли Firebase, откройте «Настройки проекта» и добавьте туда отпечатки своих сертификатов SHA. Загрузите обновленный файл google-services.json и добавьте его в папку приложения Projects.

Это сработало для меня.

Firebase console Screenshot


4

ochs.tobi
20 Дек 2018 в 08:12

Кажется, ваш SHA1 перезаписан Google Play Store. Проверьте в своем магазине Google Play, панели запуска, под подписью приложения, посмотрите, есть ли в Google Play добавленный дополнительный SHA1.

И скопируйте, что SHA1, добавьте к вашему соответствующему месту, сделает работу.


11

Paul Zhang Ising
5 Ноя 2018 в 02:25

Я думаю, что ошибка произошла от неправильного SHA1. Пожалуйста, не забывайте, что SHA1 отличается между выпуском и режимом отладки в андроид студии. Вместо того, чтобы использовать keytool для получения SHA1, вы можете использовать проект Gradle -> Task -> android -> signatureReport в студии android (можете открыть его с помощью меню View -> Toolwindow -> gradle), чтобы получить релиз и отладку SHA1. После этого для простоты работы вам нужно создать 2 отдельных учетных данных с двумя SHA1 на облачной консоли Google (Google просто дает указание создать 1 с помощью выпуска SHA1, когда мы разрабатываем его, он не будет работать, поскольку он использует отладочный SHA1).


3

Bioz Nguyen
27 Ноя 2018 в 15:48

В моем случае, после добавления отпечатка пальца в консоль Firebase, он автоматически выбирается консолью разработчиков Google и показывает отпечатки пальцев. Но войти не получилось. Посмотрев каждый шаг, я понял, что Google перевернул мой пакет файлов манифеста, как этот com.xxxxxxxx.app. Но на самом деле это app.xxxxxxxx.com в консоли разработчика Google. Поэтому я удалил автоматически созданный отпечаток и добавил отпечаток с правильным именем пакета. БУМ !! . Это сработало.


0

Naroju
25 Янв 2019 в 12:10

В моем случае проблема заключалась в том, что в моем эмуляторе не было Play Store. Я сделал эмулятор (с именем API 23) через Visual Studio, потому что я также разрабатываю с использованием Xamarin.Forms, и в Диспетчере устройств Visual Studio Android вы можете выбрать, должен ли ваш эмулятор иметь Google Play Store.

Пришлось создать эмулятор через Android Studio AVD и убедиться, что у него есть Play Store:

enter image description here


0

Reed
12 Янв 2020 в 11:05

Я застрял на некоторое время.

Убедитесь, что эти шаги выполнены

Correct SHA key is saved on Firebase Console.
Valid reversed client id.
from fcm console=>select app=>from authentication=>enable google sign-in method


1

Sumit Kumawat
8 Янв 2020 в 11:10

Я застрял в проблеме входа в Google с 2-х недель, наконец-то хорошо разобрался. Давайте мне объяснить причину. Проблема была связана с пожарной базой. В Firebase они упомянули поле «поддержка по электронной почте» как необязательное. Но как только я добавил его (любой из ваших личных писем), проблема была решена, и я получил ответ. Если вы получили ошибку 12501, то это связано с настройками в вашем аккаунте Google.


1

Kevin
3 Июл 2019 в 06:11

Проверьте, добавлены ли отпечатки SHA-1 в настройки проекта Firebase. Если нет, найдите отпечаток SHA-1, используя

https://developers.google.com/android/guides/client-auth

Также найдите отпечаток ключа разблокировки SHA-1, используя

keytool -list -v -keystore <keystore path>

Удалите <keystore path> с путем к хранилищу ключей.

Затем добавьте оба отпечатка SHA-1 в настройки проектов Firebase.

NB. Не забудьте заменить google-services.json обновленным google-services.json новыми отпечатками пальцев. Я потерял два дня на этом.

Пока отлаживать

Студия Android автоматически генерирует ~/.android/debug.keystore при первом отладить сборку и использовать ее для подписи приложения.

Чтобы запустить SHA-1 (пароль android) (doc) ) :

keytool -exportcert -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore

Это SHA-1 необходимо добавить в настройки приложения в firebase, чтобы разрешить использование возможностей входа в Google при тестировании отладочной сборки.


43

michaelbn
22 Янв 2019 в 10:19

Ошибка PlatformException (sign_in_failed, com.google.android.gms.common.api.ApiException: 12500:, ноль)

Эту ошибку 12500 можно устранить, добавив адрес электронной почты службы поддержки . на ваш проект в настройках проекта. Открыть ссылку https://console.firebase.google.com/

Выберите свой проект и откройте вкладку настроек.

Укажите действующий адрес электронной почты службы поддержки и перезапустите приложение.

enter image description here


97

Maddu Swaroop
25 Фев 2020 в 05:25

Если есть еще кто-то с подобной проблемой, если вы добавляете пользовательские области, убедитесь, что это допустимая область. В моем случае я смешал области Facebook с областями Google и потратил некоторое время, чтобы понять это!


5

Paulo Taylor
11 Апр 2018 в 10:53

Я использую Аутентификацию Firebase. Мой SHA-1 был указан правильно, идентификатор клиента также был правильным, но я все еще получал 12500.

Оказалось, что моя проблема заключалась в том, что я не указал адрес электронной почты службы поддержки в настройках своего проекта. (Настройки -> вкладка Общие -> раздел Ваш проект (Общие настройки)).


5

algrid
24 Май 2019 в 16:00

Сначала убедитесь, что вы зарегистрировали свое приложение в консоли разработчиков Google

Убедитесь, что в вашем приложении Firebase есть ключи debug и release. Если эта ошибка появляется в производственной среде, добавьте SHA-1 release key в базовое приложение. Если он появится в разработке, добавьте SHA-1 debug key.

Where to add SHA-1 finger print

Получение ключа отладки / выпуска:

keytool -exportcert -list -v -alias [your alias] -keystore [path/to/debug or release.keystore]

Обязательно загрузите обновленное google-services.json в свое приложение.


3

Denn
7 Янв 2019 в 09:00

Для меня проблема заключалась в использовании ClientID ‘release’ с моим настроенным на отладку приложением. Убедитесь, что у вас есть ключи выпуска и отладки, использующие каждый SHA-1 соответственно.


2

peresisUser
10 Окт 2018 в 07:12

Когда ваше приложение проходит проверку подлинности с помощью внутреннего сервера или обращается к API Google с вашего внутреннего сервера, вы должны передать идентификатор клиента OAuth 2.0, созданный для вашего сервера, в метод requestIdToken при создании объекта GoogleSignInOptions для доступа к основной информации профиля пользователя. , Кроме того, не забудьте отправить электронное письмо в службу поддержки на экране согласия OAuth, который находится на странице учетных данных в консоли API.


2

Sridhar Shanmugam
5 Янв 2020 в 15:36

Убедитесь, что вы правильно настроили следующие вещи:

  1. Сгенерируйте идентификатор клиента в вашем проекте Google.
  2. Укажите правильный ключ SHA-1 для этого идентификатора клиента. (отладка / выпуск)
  3. Укажите правильное имя пакета для этого идентификатора клиента.
  4. Убедитесь, что вы сгенерировали идентификатор клиента в файле strings.xml, google-services.json или credentials.json.


0

Chintan Shah
14 Дек 2018 в 08:04

https://developers.google.com/identity/sign-in/ Android / вход следуйте этой документации API, но имейте в виду, что внутри WEB_CLIENT_ID используйте значение идентификатора клиента, которое генерируется в файле google-services.json.

class MainActivity : AppCompatActivity(), GoogleApiClient.OnConnectionFailedListener {
private val TAG = "JSAGoogleSignIn"
private val REQUEST_CODE_SIGN_IN = 1234
private val WEB_CLIENT_ID = "354298333018-XXXXXXXXXXXXXXXXXXXXXXX.apps.googleusercontent.com"
private var mAuth: FirebaseAuth? = null

private var mGoogleApiClient: GoogleApiClient? = null
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    var txt_register = findViewById<TextView>(R.id.txt_register)
    txt_register.setOnClickListener {
        var intent = Intent(this@MainActivity, RegisterActivity::class.java)
        finish()
        startActivity(intent)
    }
    val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestIdToken(WEB_CLIENT_ID)
            .requestEmail()
            .build()
    mGoogleApiClient = GoogleApiClient.Builder(this)
            .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */)
            .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
            .build()

    mAuth = FirebaseAuth.getInstance()
    sign_in_button.setOnClickListener {
        val intent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient)
        startActivityForResult(intent, REQUEST_CODE_SIGN_IN)
    }

}


override fun onConnectionFailed(p0: ConnectionResult) {
    TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}


private fun updateUI(user: FirebaseUser?) {
    if (user != null) {
        Log.e("Email", "Value" + user.email)
    }

}

fun signIn() {

}

override fun onStart() {
    super.onStart()
    val currentUser = mAuth!!.currentUser
    updateUI(currentUser)
}

public override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)

    // Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...);
    if (requestCode == REQUEST_CODE_SIGN_IN) {
        val result = Auth.GoogleSignInApi.getSignInResultFromIntent(data)
        if (result.isSuccess) {
            // successful -> authenticate with Firebase
            val account = result.signInAccount
            firebaseAuthWithGoogle(account!!)
        } else {
            // failed -> update UI
            updateUI(null)
            Toast.makeText(applicationContext, "SignIn: failed!" + result.status,
                    Toast.LENGTH_SHORT).show()
        }
    }
}

private fun firebaseAuthWithGoogle(acct: GoogleSignInAccount) {
    Log.e(TAG, "firebaseAuthWithGoogle():" + acct.id!!)

    val credential = GoogleAuthProvider.getCredential(acct.idToken, null)
    mAuth!!.signInWithCredential(credential)
            .addOnCompleteListener(this) { task ->
                if (task.isSuccessful) {
                    // Sign in success
                    Log.e(TAG, "signInWithCredential: Success!")
                    val user = mAuth!!.currentUser
                    updateUI(user)
                } else {
                    // Sign in fails
                    Log.w(TAG, "signInWithCredential: Failed!", task.exception)
                    Toast.makeText(applicationContext, "Authentication failed!",
                            Toast.LENGTH_SHORT).show()
                    updateUI(null)
                }
            }
}


0

Vajani Kishan
23 Янв 2019 в 07:47

В моем случае я работал над непроизводственным приложением, проблема заключалась в том, что при создании проекта в консоли Firebase возникали проблемы с синхронизацией ключей SHA-1 назад и вперед из консолей разработчиков Firebase и Google. Итак, я решил сначала создать проект в консоли разработчика Google, а затем выбрать его при создании нового проекта в консоли Firebase.

Для этого я также написал учебник, который может вам помочь.


0

Zain
14 Авг 2019 в 04:32

В моем случае эта ошибка возникла из-за того, что старшая команда удалила аутентификацию Android, так как кажется, что для аутентификации бэкэнда ключ Android не нужен. Таким образом, для входа в Google необходимы ключи Android и веб-клиента.


0

Himani Tank
22 Апр 2020 в 06:00

Попробуйте следующие варианты:

keytool -list -v -keystore C:UsersMGDesktoptest.jks -alias test

Он запрашивает пароль и просто введите пароль. Вы можете увидеть отпечатки пальцев SHA1, MD5.

enter image description here


-1

Zoe
5 Ноя 2018 в 16:49

Убедитесь, что ваш проект не должен содержать никаких специальных символов, включая числовые или любые другие символы (имя проекта должно быть простым, например, com.google.testproject).


0

Sekhon123
6 Авг 2019 в 05:44

Ошибка появилась у меня, когда опция Google не была включена, , как показано на изображении .

Это произошло, когда я сменил аккаунт Google и забыл включить опцию подключения к Google.


0

Yonibagi
14 Май 2019 в 09:24

В моем случае это из-за неправильного идентификатора клиента Google. Я изменяю свой ключ на ключ, указанный в google-services.json (под oauth_client объектом)


0

thuanle
25 Ноя 2018 в 10:55

Для работы входа в Google необходима электронная почта поддержки, а также все ссылки на проекты и конфиденциальность , в противном случае выдается 12500.

Установите его на https://console.developers.google.com/apis/credentials в в нижней части второй вкладки с именем «Экран согласия OAuth» — там вы найдете три ссылки, которые необходимо настроить.

Это не упоминается где-либо в руководствах Firebase.


40

zub0r
27 Дек 2019 в 11:04

I am trying to integrate Google Sign In into my app. I don’t have a back-end server, I am just getting the details of the logged on Google Account to my app.

I first tried it by using Google Sign In Example but I got an error (No code changes made except for printing the stacktrace below). I just used the example SignInActivity as I don’t have a back-end server.

 Exception com.google.android.gms.common.api.ApiException: 12500: 
 at com.google.android.gms.common.internal.zzb.zzz(Unknown Source)
 at com.google.android.gms.auth.api.signin.GoogleSignIn.getSignedInAccountFromIntent(Unknown Source)
 at com.ewise.android.api.MainActivity.onActivityResult(SignInActivity.java:89)     at android.app.Activity.dispatchActivityResult(Activity.java:7010)
 at android.app.ActivityThread.deliverResults(ActivityThread.java:4187)
 at android.app.ActivityThread.handleSendResult(ActivityThread.java:4234)
 at android.app.ActivityThread.-wrap20(ActivityThread.java)
 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1584)
 at android.os.Handler.dispatchMessage(Handler.java:102)
 at android.os.Looper.loop(Looper.java:154)
 at android.app.ActivityThread.main(ActivityThread.java:6316)
 at java.lang.reflect.Method.invoke(Native Method)
 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:872)
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762)

Code

 public class SignInActivity extends AppCompatActivity implements
         View.OnClickListener {

     private static final String TAG = "SignInActivity";
     private static final int RC_SIGN_IN = 9001;

     private GoogleSignInClient mGoogleSignInClient;
     private TextView mStatusTextView;

     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);

         // Views
         mStatusTextView = findViewById(R.id.status);

         // Button listeners
         findViewById(R.id.sign_in_button).setOnClickListener(this);
         findViewById(R.id.sign_out_button).setOnClickListener(this);
         findViewById(R.id.disconnect_button).setOnClickListener(this);

         // [START configure_signin]
         // Configure sign-in to request the user's ID, email address, and basic
         // profile. ID and basic profile are included in DEFAULT_SIGN_IN.
         GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                 .requestEmail()
                 .build();
         // [END configure_signin]

         // [START build_client]
         // Build a GoogleSignInClient with the options specified by gso.
         mGoogleSignInClient = GoogleSignIn.getClient(this, gso);
         // [END build_client]

         // [START customize_button]
         // Set the dimensions of the sign-in button.
         SignInButton signInButton = findViewById(R.id.sign_in_button);
         signInButton.setSize(SignInButton.SIZE_STANDARD);
         signInButton.setColorScheme(SignInButton.COLOR_LIGHT);
         // [END customize_button]
     }

     @Override
     public void onStart() {
         super.onStart();

         // [START on_start_sign_in]
         // Check for existing Google Sign In account, if the user is already signed in
         // the GoogleSignInAccount will be non-null.
         GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(this);
         updateUI(account);
         // [END on_start_sign_in]
     }

     // [START onActivityResult]
     @Override
     public void onActivityResult(int requestCode, int resultCode, Intent data) {
         super.onActivityResult(requestCode, resultCode, data);

         // Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...);
         if (requestCode == RC_SIGN_IN) {
             // The Task returned from this call is always completed, no need to attach
             // a listener.
             Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
             handleSignInResult(task);
         }
     }
     // [END onActivityResult]

     // [START handleSignInResult]
     private void handleSignInResult(Task<GoogleSignInAccount> completedTask) {
         try {
             GoogleSignInAccount account = completedTask.getResult(ApiException.class);

             // Signed in successfully, show authenticated UI.
             updateUI(account);
         } catch (ApiException e) {
             // The ApiException status code indicates the detailed failure reason.
             // Please refer to the GoogleSignInStatusCodes class reference for more information.
             Log.w(TAG, "signInResult:failed code=" + e.getStatusCode());
             e.printStackTrace();
             updateUI(null);
         }
     }
     // [END handleSignInResult]

     // [START signIn]
     private void signIn() {
         Intent signInIntent = mGoogleSignInClient.getSignInIntent();
         startActivityForResult(signInIntent, RC_SIGN_IN);
     }
     // [END signIn]

     // [START signOut]
     private void signOut() {
         mGoogleSignInClient.signOut()
                 .addOnCompleteListener(this, new OnCompleteListener<Void>() {
                     @Override
                     public void onComplete(@NonNull Task<Void> task) {
                         // [START_EXCLUDE]
                         updateUI(null);
                         // [END_EXCLUDE]
                     }
                 });
     }
     // [END signOut]

     // [START revokeAccess]
     private void revokeAccess() {
         mGoogleSignInClient.revokeAccess()
                 .addOnCompleteListener(this, new OnCompleteListener<Void>() {
                     @Override
                     public void onComplete(@NonNull Task<Void> task) {
                         // [START_EXCLUDE]
                         updateUI(null);
                         // [END_EXCLUDE]
                     }
                 });
     }
     // [END revokeAccess]

     private void updateUI(@Nullable GoogleSignInAccount account) {
         if (account != null) {
             mStatusTextView.setText(getString(R.string.signed_in_fmt, account.getDisplayName()));

             findViewById(R.id.sign_in_button).setVisibility(View.GONE);
             findViewById(R.id.sign_out_and_disconnect).setVisibility(View.VISIBLE);
         } else {
             mStatusTextView.setText(R.string.signed_out);

             findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE);
             findViewById(R.id.sign_out_and_disconnect).setVisibility(View.GONE);
         }
     }

     @Override
     public void onClick(View v) {
         switch (v.getId()) {
             case R.id.sign_in_button:
                 signIn();
                 break;
             case R.id.sign_out_button:
                 signOut();
                 break;
             case R.id.disconnect_button:
                 revokeAccess();
                 break;
         }
     }
  }

From what I read, the issue could be caused by SHA1 Generation.

I followed the complete guide but apparently it’s not working.

I copied the SHA1 from gradle signingReport

Variant: debug
Config: debug
Store: /Users/user/.android/debug.keystore
Alias: AndroidDebugKey
MD5: A3:16:3F:43:75:FE:07:62:6D:8D:CC:DD:21:9F:FA:1A
SHA1: 7B:21:26:7F:D8:18:BB:0E:36:1C:82:DD:B7:28:5F:C1:2F:5C:E4:EA
Valid until: Saturday, August 31, 2047
----------
Variant: release
Config: none
----------
Variant: debugAndroidTest
Config: debug
Store: /Users/user/.android/debug.keystore
Alias: AndroidDebugKey
MD5: A3:16:3F:43:75:FE:07:62:6D:8D:CC:DD:21:9F:FA:1A
SHA1: 7B:21:26:7F:D8:18:BB:0E:36:1C:82:DD:B7:28:5F:C1:2F:5C:E4:EA
Valid until: Saturday, August 31, 2047
----------
Variant: debugUnitTest
Config: debug
Store: /Users/user/.android/debug.keystore
Alias: AndroidDebugKey
MD5: A3:16:3F:43:75:FE:07:62:6D:8D:CC:DD:21:9F:FA:1A
SHA1: 7B:21:26:7F:D8:18:BB:0E:36:1C:82:DD:B7:28:5F:C1:2F:5C:E4:EA
Valid until: Saturday, August 31, 2047

what could be the possible cause of this?

Thanks

P.S. Could this be a possible cause?

Google Play services out of date.  Requires 11720000 but found 10932470

I am trying to integrate Google Sign In into my app. I don’t have a back-end server, I am just getting the details of the logged on Google Account to my app.

I first tried it by using Google Sign In Example but I got an error (No code changes made except for printing the stacktrace below). I just used the example SignInActivity as I don’t have a back-end server.

 Exception com.google.android.gms.common.api.ApiException: 12500: 
 at com.google.android.gms.common.internal.zzb.zzz(Unknown Source)
 at com.google.android.gms.auth.api.signin.GoogleSignIn.getSignedInAccountFromIntent(Unknown Source)
 at com.ewise.android.api.MainActivity.onActivityResult(SignInActivity.java:89)     at android.app.Activity.dispatchActivityResult(Activity.java:7010)
 at android.app.ActivityThread.deliverResults(ActivityThread.java:4187)
 at android.app.ActivityThread.handleSendResult(ActivityThread.java:4234)
 at android.app.ActivityThread.-wrap20(ActivityThread.java)
 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1584)
 at android.os.Handler.dispatchMessage(Handler.java:102)
 at android.os.Looper.loop(Looper.java:154)
 at android.app.ActivityThread.main(ActivityThread.java:6316)
 at java.lang.reflect.Method.invoke(Native Method)
 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:872)
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762)

Code

 public class SignInActivity extends AppCompatActivity implements
         View.OnClickListener {

     private static final String TAG = "SignInActivity";
     private static final int RC_SIGN_IN = 9001;

     private GoogleSignInClient mGoogleSignInClient;
     private TextView mStatusTextView;

     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);

         // Views
         mStatusTextView = findViewById(R.id.status);

         // Button listeners
         findViewById(R.id.sign_in_button).setOnClickListener(this);
         findViewById(R.id.sign_out_button).setOnClickListener(this);
         findViewById(R.id.disconnect_button).setOnClickListener(this);

         // [START configure_signin]
         // Configure sign-in to request the user's ID, email address, and basic
         // profile. ID and basic profile are included in DEFAULT_SIGN_IN.
         GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                 .requestEmail()
                 .build();
         // [END configure_signin]

         // [START build_client]
         // Build a GoogleSignInClient with the options specified by gso.
         mGoogleSignInClient = GoogleSignIn.getClient(this, gso);
         // [END build_client]

         // [START customize_button]
         // Set the dimensions of the sign-in button.
         SignInButton signInButton = findViewById(R.id.sign_in_button);
         signInButton.setSize(SignInButton.SIZE_STANDARD);
         signInButton.setColorScheme(SignInButton.COLOR_LIGHT);
         // [END customize_button]
     }

     @Override
     public void onStart() {
         super.onStart();

         // [START on_start_sign_in]
         // Check for existing Google Sign In account, if the user is already signed in
         // the GoogleSignInAccount will be non-null.
         GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(this);
         updateUI(account);
         // [END on_start_sign_in]
     }

     // [START onActivityResult]
     @Override
     public void onActivityResult(int requestCode, int resultCode, Intent data) {
         super.onActivityResult(requestCode, resultCode, data);

         // Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...);
         if (requestCode == RC_SIGN_IN) {
             // The Task returned from this call is always completed, no need to attach
             // a listener.
             Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
             handleSignInResult(task);
         }
     }
     // [END onActivityResult]

     // [START handleSignInResult]
     private void handleSignInResult(Task<GoogleSignInAccount> completedTask) {
         try {
             GoogleSignInAccount account = completedTask.getResult(ApiException.class);

             // Signed in successfully, show authenticated UI.
             updateUI(account);
         } catch (ApiException e) {
             // The ApiException status code indicates the detailed failure reason.
             // Please refer to the GoogleSignInStatusCodes class reference for more information.
             Log.w(TAG, "signInResult:failed code=" + e.getStatusCode());
             e.printStackTrace();
             updateUI(null);
         }
     }
     // [END handleSignInResult]

     // [START signIn]
     private void signIn() {
         Intent signInIntent = mGoogleSignInClient.getSignInIntent();
         startActivityForResult(signInIntent, RC_SIGN_IN);
     }
     // [END signIn]

     // [START signOut]
     private void signOut() {
         mGoogleSignInClient.signOut()
                 .addOnCompleteListener(this, new OnCompleteListener<Void>() {
                     @Override
                     public void onComplete(@NonNull Task<Void> task) {
                         // [START_EXCLUDE]
                         updateUI(null);
                         // [END_EXCLUDE]
                     }
                 });
     }
     // [END signOut]

     // [START revokeAccess]
     private void revokeAccess() {
         mGoogleSignInClient.revokeAccess()
                 .addOnCompleteListener(this, new OnCompleteListener<Void>() {
                     @Override
                     public void onComplete(@NonNull Task<Void> task) {
                         // [START_EXCLUDE]
                         updateUI(null);
                         // [END_EXCLUDE]
                     }
                 });
     }
     // [END revokeAccess]

     private void updateUI(@Nullable GoogleSignInAccount account) {
         if (account != null) {
             mStatusTextView.setText(getString(R.string.signed_in_fmt, account.getDisplayName()));

             findViewById(R.id.sign_in_button).setVisibility(View.GONE);
             findViewById(R.id.sign_out_and_disconnect).setVisibility(View.VISIBLE);
         } else {
             mStatusTextView.setText(R.string.signed_out);

             findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE);
             findViewById(R.id.sign_out_and_disconnect).setVisibility(View.GONE);
         }
     }

     @Override
     public void onClick(View v) {
         switch (v.getId()) {
             case R.id.sign_in_button:
                 signIn();
                 break;
             case R.id.sign_out_button:
                 signOut();
                 break;
             case R.id.disconnect_button:
                 revokeAccess();
                 break;
         }
     }
  }

From what I read, the issue could be caused by SHA1 Generation.

I followed the complete guide but apparently it’s not working.

I copied the SHA1 from gradle signingReport

Variant: debug
Config: debug
Store: /Users/user/.android/debug.keystore
Alias: AndroidDebugKey
MD5: A3:16:3F:43:75:FE:07:62:6D:8D:CC:DD:21:9F:FA:1A
SHA1: 7B:21:26:7F:D8:18:BB:0E:36:1C:82:DD:B7:28:5F:C1:2F:5C:E4:EA
Valid until: Saturday, August 31, 2047
----------
Variant: release
Config: none
----------
Variant: debugAndroidTest
Config: debug
Store: /Users/user/.android/debug.keystore
Alias: AndroidDebugKey
MD5: A3:16:3F:43:75:FE:07:62:6D:8D:CC:DD:21:9F:FA:1A
SHA1: 7B:21:26:7F:D8:18:BB:0E:36:1C:82:DD:B7:28:5F:C1:2F:5C:E4:EA
Valid until: Saturday, August 31, 2047
----------
Variant: debugUnitTest
Config: debug
Store: /Users/user/.android/debug.keystore
Alias: AndroidDebugKey
MD5: A3:16:3F:43:75:FE:07:62:6D:8D:CC:DD:21:9F:FA:1A
SHA1: 7B:21:26:7F:D8:18:BB:0E:36:1C:82:DD:B7:28:5F:C1:2F:5C:E4:EA
Valid until: Saturday, August 31, 2047

what could be the possible cause of this?

Thanks

P.S. Could this be a possible cause?

Google Play services out of date.  Requires 11720000 but found 10932470

Я пытаюсь интегрировать Google Sign In в свое приложение. У меня нет серверного сервера, я просто получаю информацию о зарегистрированном аккаунте Google в своем приложении.

Сначала я попробовал его, используя Пример входа в Google, но у меня возникла ошибка (никаких изменений кода не было, кроме печати стека). Я просто использовал пример SignInActivity, поскольку у меня нет серверного сервера.

 Exception com.google.android.gms.common.api.ApiException: 12500: 
 at com.google.android.gms.common.internal.zzb.zzz(Unknown Source)
 at com.google.android.gms.auth.api.signin.GoogleSignIn.getSignedInAccountFromIntent(Unknown Source)
 at com.ewise.android.api.MainActivity.onActivityResult(SignInActivity.java:89)     at android.app.Activity.dispatchActivityResult(Activity.java:7010)
 at android.app.ActivityThread.deliverResults(ActivityThread.java:4187)
 at android.app.ActivityThread.handleSendResult(ActivityThread.java:4234)
 at android.app.ActivityThread.-wrap20(ActivityThread.java)
 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1584)
 at android.os.Handler.dispatchMessage(Handler.java:102)
 at android.os.Looper.loop(Looper.java:154)
 at android.app.ActivityThread.main(ActivityThread.java:6316)
 at java.lang.reflect.Method.invoke(Native Method)
 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:872)
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762)

код

 public class SignInActivity extends AppCompatActivity implements
         View.OnClickListener {

     private static final String TAG = "SignInActivity";
     private static final int RC_SIGN_IN = 9001;

     private GoogleSignInClient mGoogleSignInClient;
     private TextView mStatusTextView;

     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);

         // Views
         mStatusTextView = findViewById(R.id.status);

         // Button listeners
         findViewById(R.id.sign_in_button).setOnClickListener(this);
         findViewById(R.id.sign_out_button).setOnClickListener(this);
         findViewById(R.id.disconnect_button).setOnClickListener(this);

         // [START configure_signin]
         // Configure sign-in to request the user ID, email address, and basic
         // profile. ID and basic profile are included in DEFAULT_SIGN_IN.
         GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                 .requestEmail()
                 .build();
         // [END configure_signin]

         // [START build_client]
         // Build a GoogleSignInClient with the options specified by gso.
         mGoogleSignInClient = GoogleSignIn.getClient(this, gso);
         // [END build_client]

         // [START customize_button]
         // Set the dimensions of the sign-in button.
         SignInButton signInButton = findViewById(R.id.sign_in_button);
         signInButton.setSize(SignInButton.SIZE_STANDARD);
         signInButton.setColorScheme(SignInButton.COLOR_LIGHT);
         // [END customize_button]
     }

     @Override
     public void onStart() {
         super.onStart();

         // [START on_start_sign_in]
         // Check for existing Google Sign In account, if the user is already signed in
         // the GoogleSignInAccount will be non-null.
         GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(this);
         updateUI(account);
         // [END on_start_sign_in]
     }

     // [START onActivityResult]
     @Override
     public void onActivityResult(int requestCode, int resultCode, Intent data) {
         super.onActivityResult(requestCode, resultCode, data);

         // Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...);
         if (requestCode == RC_SIGN_IN) {
             // The Task returned from this call is always completed, no need to attach
             // a listener.
             Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
             handleSignInResult(task);
         }
     }
     // [END onActivityResult]

     // [START handleSignInResult]
     private void handleSignInResult(Task<GoogleSignInAccount> completedTask) {
         try {
             GoogleSignInAccount account = completedTask.getResult(ApiException.class);

             // Signed in successfully, show authenticated UI.
             updateUI(account);
         } catch (ApiException e) {
             // The ApiException status code indicates the detailed failure reason.
             // Please refer to the GoogleSignInStatusCodes class reference for more information.
             Log.w(TAG, "signInResult:failed code=" + e.getStatusCode());
             e.printStackTrace();
             updateUI(null);
         }
     }
     // [END handleSignInResult]

     // [START signIn]
     private void signIn() {
         Intent signInIntent = mGoogleSignInClient.getSignInIntent();
         startActivityForResult(signInIntent, RC_SIGN_IN);
     }
     // [END signIn]

     // [START signOut]
     private void signOut() {
         mGoogleSignInClient.signOut()
                 .addOnCompleteListener(this, new OnCompleteListener<Void>() {
                     @Override
                     public void onComplete(@NonNull Task<Void> task) {
                         // [START_EXCLUDE]
                         updateUI(null);
                         // [END_EXCLUDE]
                     }
                 });
     }
     // [END signOut]

     // [START revokeAccess]
     private void revokeAccess() {
         mGoogleSignInClient.revokeAccess()
                 .addOnCompleteListener(this, new OnCompleteListener<Void>() {
                     @Override
                     public void onComplete(@NonNull Task<Void> task) {
                         // [START_EXCLUDE]
                         updateUI(null);
                         // [END_EXCLUDE]
                     }
                 });
     }
     // [END revokeAccess]

     private void updateUI(@Nullable GoogleSignInAccount account) {
         if (account != null) {
             mStatusTextView.setText(getString(R.string.signed_in_fmt, account.getDisplayName()));

             findViewById(R.id.sign_in_button).setVisibility(View.GONE);
             findViewById(R.id.sign_out_and_disconnect).setVisibility(View.VISIBLE);
         } else {
             mStatusTextView.setText(R.string.signed_out);

             findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE);
             findViewById(R.id.sign_out_and_disconnect).setVisibility(View.GONE);
         }
     }

     @Override
     public void onClick(View v) {
         switch (v.getId()) {
             case R.id.sign_in_button:
                 signIn();
                 break;
             case R.id.sign_out_button:
                 signOut();
                 break;
             case R.id.disconnect_button:
                 revokeAccess();
                 break;
         }
     }
  }

Из того, что я прочитал, проблема может быть вызвана SHA1 Generation.

Я выполнил полный руководство, но, по-видимому, он не работает.

Я скопировал SHA1 из gradle signedReport

Variant: debug
Config: debug
Store: /Users/user/.android/debug.keystore
Alias: AndroidDebugKey
MD5: A3:16:3F:43:75:FE:07:62:6D:8D:CC:DD:21:9F:FA:1A
SHA1: 7B:21:26:7F:D8:18:BB:0E:36:1C:82:DD:B7:28:5F:C1:2F:5C:E4:EA
Valid until: Saturday, August 31, 2047
----------
Variant: release
Config: none
----------
Variant: debugAndroidTest
Config: debug
Store: /Users/user/.android/debug.keystore
Alias: AndroidDebugKey
MD5: A3:16:3F:43:75:FE:07:62:6D:8D:CC:DD:21:9F:FA:1A
SHA1: 7B:21:26:7F:D8:18:BB:0E:36:1C:82:DD:B7:28:5F:C1:2F:5C:E4:EA
Valid until: Saturday, August 31, 2047
----------
Variant: debugUnitTest
Config: debug
Store: /Users/user/.android/debug.keystore
Alias: AndroidDebugKey
MD5: A3:16:3F:43:75:FE:07:62:6D:8D:CC:DD:21:9F:FA:1A
SHA1: 7B:21:26:7F:D8:18:BB:0E:36:1C:82:DD:B7:28:5F:C1:2F:5C:E4:EA
Valid until: Saturday, August 31, 2047

что может быть причиной этого?

Спасибо

P.S. Может ли это быть возможной причиной?

Google Play services out of date.  Requires 11720000 but found 10932470

█ 21.09.2007 11:06

Вроде простая ошибка. Но. Оракл 8. Через менеджер база коннектится, монтируется, открывается, в алерт логе ошибок нет. Больше ни из чего приконнектится не могу — ни плюсом, ни DBA.
ORA-12500:TNS:listener failed to start a dedicated server process
Сервер магазинный, вчера с утра на нем все работало. Подняла бэкап — такая же история. Переустановила оракловый сервер (правда сверху) — не помогает. Может есть у кого мысли?

█ 21.09.2007 11:22

ORACLE_HOMEnetworkloglistener.log смотри

█ 21.09.2007 11:40

21-СЕН-2007 10:53:13 * service_died * YABL65 * 12537
21-СЕН-2007 10:53:28 * service_register * YABL65 * 0
21-СЕН-2007 10:53:54 * (CONNECT_DATA=(SERVICE_NAME=YABL65)(CID=(PROGRAM=D:ORACLEORA81binSQLPLUSW.EXE)(HOST=SERVER65)(USER=operator))) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.63)(PORT=1138)) * establish * YABL65 * 12500
TNS-12500: TNS:сбой прослушивателя при запуске выделенного серверного процесса
TNS-12560: TNS:ошибка адаптера протокола
TNS-00530: Ошибка адаптера протокола

█ 21.09.2007 11:57

Пробуем курить здесь для начала

█ 21.09.2007 12:01

Да курю уж с утра. У всех или новые бызы не встают или после открытия кучи сессий не подключаются. Что — то своего случая не найду. У меня то вчера все работало и вдруг алтын. Подняла сейчас базу на другом компе — нормально поднялась. Видимо формат рулит.

█ 21.09.2007 12:08

Цитата:

inna ➤ Да курю уж с утра. У всех или новые бызы не встают или после открытия кучи сессий не подключаются. Что — то своего случая не найду. У меня то вчера все работало и вдруг алтын. Подняла сейчас базу на другом компе — нормально поднялась. Видимо формат рулит.

до следующего «Сервер магазинный, вчера с утра на нем все работало.»
лучше все таки найти и устранить причниу а не следствие.

█ 21.09.2007 12:10

чаще всего такая фигня вылезает, когда не хватает памяти для серверного процесса.
случается при неаккуратном распределении памяти, так что общая память оракла перестает умещаться в 1.7G (без ключа /3G) или подходит слишком близко к этому пределу.
запросто может быть при ситуации, когда обычно базу открывали одним способом (автозапуском по старту сервиса, к примеру), а в какой-то момент открыли другим (через студию, например же) и использовался другой файл параметров.

█ 21.09.2007 12:16

по ссылке от reddevil самое первое из полезного:

1. На машине, где работает лисенер:
lsnrctl trace ADMIN

2. Выполнить попытку подключения, которая не удается

3. На машине, где работает лисенер:
lsnrctl trace OFF

4. Изучить лог лисенера

█ 21.09.2007 12:25

Цитата:

reddevil ➤ до следующего «Сервер магазинный, вчера с утра на нем все работало.»
лучше все таки найти и устранить причниу а не следствие.

Причиной может быть постоянное короткое замыкание в сети магазина из за которых выключаються бесперебойники и вчера все начилось с того, что сервер супермага как служба не хотел работать. Может?

█ 21.09.2007 12:45

Цитата:

Andrew_Konev ➤ чаще всего такая фигня вылезает, когда не хватает памяти для серверного процесса.
случается при неаккуратном распределении памяти, так что общая память оракла перестает умещаться в 1.7G (без ключа /3G) или подходит слишком близко к этому пределу.
запросто может быть при ситуации, когда обычно базу открывали одним способом (автозапуском по старту сервиса, к примеру), а в какой-то момент открыли другим (через студию, например же) и использовался другой файл параметров.

На сервере 1ГБ памяти, другого файла параметров на нем нет. Никто там не копался 110% (приходится доверять человеческому фактору). Если кому не жалко — взгляните на лог — с своему стыду криминала не вижу.

Часовой пояс GMT +3, время: 16:46.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.

На самом деле, у меня недавно возникла та же проблема, и я узнал, что версия сервиса Google Play не обновляется. По этому вопросу в стеке переполнения qaru.site/questions/1273839/…

Так что я должен был сделать это в onActivityResult,

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);

if (requestCode == GOOGLE_SIGNIN_ID){
Task<GoogleSignInAccount> googleSignInAccountTask = GoogleSignIn.getSignedInAccountFromIntent(data);
try {

GoogleSignInAccount googleSignInAccount = googleSignInAccountTask.getResult(ApiException.class);
fireBaseAuthenticationWithGoogle(googleSignInAccount);

}catch (ApiException e){

//if user doesn't have updated google play services version

if (e.getStatusCode() == 12500){

try{
// show your own AlertDialog for example:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
// set the message
builder.setMessage("This app uses google play services for
signing in")
.setTitle("Do you want to update?");

builder.setPositiveButton("Ok", (dialog, id) -> {

//final String appPackageName = "com.google.android.gms";
final String appPackageName =
"com.google.android.gms&hl=en_IN";
try {
startActivity(new Intent(Intent.ACTION_VIEW,
Uri.parse("market://details?id=" + appPackageName)));
}catch (android.content.ActivityNotFoundException anfe) {
startActivity(new Intent(Intent.ACTION_VIEW,
Uri.parse("https://play.google.com/store/apps/details?id=" +
appPackageName)));
}
});
builder.setNegativeButton("Cancel", new
DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// User cancelled the dialog
}
});
AlertDialog dialog = builder.create();
dialog.show();
}catch (Exception err){
err.printStackTrace();
}

}
}
}else {
// Pass the activity result back to the Facebook SDK
mCallbackManager.onActivityResult(requestCode, resultCode, data);
}

Попробуйте это и дайте мне знать, если у вас есть запрос. Я решил эту ошибку этим методом.

Понравилась статья? Поделить с друзьями:

Интересное по теме:

  • Код ошибки 1202 мегафон
  • Код ошибки 1250 canon
  • Код ошибки 125 симс 4
  • Код ошибки 1202 кинопоиск
  • Код ошибки 1243 фортнайт

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии