1

У меня есть приложение для Android, которое хочет, чтобы пользователи могли войти в систему через Google. До сих пор я реализовал Google SignInButton, GoogleSignInOptions и GoogleApiClient.Google SignIn не работает

Однако, когда я пытаюсь войти в систему с:

googleApiClient.connect(GoogleApiClient.SIGN_IN_MODE_REQUIRED); 

сила приложение завершает работу, как только он будет открыт с исключением следующего:

E/AndroidRuntime: FATAL EXCEPTION: main 
                   Process: de.nwt.slottynative, PID: 24509 
                   java.lang.RuntimeException: Unable to start activity ComponentInfo{de.nwt.slottynative/de.nwt.slottynative.FullscreenActivity}: java.lang.IllegalStateException: Cannot use sign-in mode: SIGN_IN_MODE_REQUIRED. Mode was already set to SIGN_IN_MODE_NONE 
                    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2739) 
                    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2804) 
                    at android.app.ActivityThread.access$900(ActivityThread.java:181) 
                    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1473) 
                    at android.os.Handler.dispatchMessage(Handler.java:102) 
                    at android.os.Looper.loop(Looper.java:145) 
                    at android.app.ActivityThread.main(ActivityThread.java:6066) 
                    at java.lang.reflect.Method.invoke(Native Method) 
                    at java.lang.reflect.Method.invoke(Method.java:372) 
                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) 
                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194) 
                    Caused by: java.lang.IllegalStateException: Cannot use sign-in mode: SIGN_IN_MODE_REQUIRED. Mode was already set to SIGN_IN_MODE_NONE 
                    at com.google.android.gms.internal.zzmg.zzbC(Unknown Source) 
                    at com.google.android.gms.internal.zzmg.connect(Unknown Source) 
                    at de.nwt.slottynative.FullscreenActivity.onCreate(FullscreenActivity.java:239) 
                    at android.app.Activity.performCreate(Activity.java:6368) 
                    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119) 
                    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2692) 
                    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2804)  
                    at android.app.ActivityThread.access$900(ActivityThread.java:181)  
                    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1473)  
                    at android.os.Handler.dispatchMessage(Handler.java:102)  
                    at android.os.Looper.loop(Looper.java:145)  
                    at android.app.ActivityThread.main(ActivityThread.java:6066)  
                    at java.lang.reflect.Method.invoke(Native Method)  
                    at java.lang.reflect.Method.invoke(Method.java:372)  
                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)  
                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)  

Если я пытаюсь войти в систему с:

googleApiClient.connect();

Я перенаправлены на фрагмент выбора учетной записи, однако, не удается Логин:

03-17 15:30:53.005 27135-27135/de.nwt.slottynative D/handleSignInResult: handleSignInResult: false 
03-17 15:30:53.015 27135-27135/de.nwt.slottynative D/handleSignInResult: status: Status{statusCode=unknown status code: 12501, resolution=null} 

Вот код, который инициализирует API:

//<editor-fold desc="Google SDK Init" > 
    googleSignInOps = new GoogleSignInOptions.Builder().requestEmail().requestId().requestProfile() 
      .requestIdToken("1042722069660-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com").build(); 
    googleApiClient = new GoogleApiClient.Builder(this).enableAutoManage(this, new GoogleApiClient.OnConnectionFailedListener() { 
     @Override 
     public void onConnectionFailed(ConnectionResult connectionResult) { 
      onGoogleConnectionFailed(connectionResult); 
     } 
    }).addApi(Auth.GOOGLE_SIGN_IN_API, googleSignInOps).build(); 
    googleApiClient.connect(); 
    googleLoginButton = (SignInButton)findViewById(R.id.googleLogin); 
    googleLoginButton.setSize(SignInButton.SIZE_WIDE); 

    googleLoginButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (v.getId() == googleLoginButton.getId()) 
       signIn(); 
     } 
    }); 
    //</editor-fold> 

Спасибо заранее за вашу помощь!

+0

Вы решили это? Можете ли вы поделиться всем кодом для входа, включая 'onActivityResult'? – suku

ответ

1

Если вы используете API для входа в аккаунт, вы должны соединиться с режимом - GoogleApiClient.SIGN_IN_MODE_OPTIONAL:

googleApiClient.connect(GoogleApiClient.SIGN_IN_MODE_OPTIONAL) 

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

+1

Это приносит мне такую ​​же ошибку, к сожалению. Точная трассировка стека, но с одной разницей: Это: вызвано: java.lang.IllegalStateException: нельзя использовать режим входа: SIGN_IN_MODE_REQUIRED. Режим уже был установлен на изменения SIGN_IN_MODE_NONE в Caused by: java.lang.IllegalStateException: нельзя использовать режим входа: SIGN_IN_MODE_OPTIONAL. Режим уже установлен на SIGN_IN_MODE_NONE – SimonC

+0

Я думаю, проблема может заключаться в том, что GoogleSignInOptions установил режим подключения внутри. Можете ли вы попытаться создать их с помощью GoogleSignInOptions.Builder (GoogleSignInOptions.DEFAULT_SIGN_IN) ' –

Смежные вопросы