2016-08-11 2 views
2

Ich versuche, Google Zeichen in meiner App diese Anweisungen hinzufügen: https://developers.google.com/identity/sign-in/android/start-integratingrequestIdToken in GoogleSignInOptions bekommt Null-Zeiger Ausnahme

In meinem signInActivity Ich erhalte eine Null-Zeiger-Ausnahme auf requestIdToken() in der Befehl

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

Wenn ich diesen Befehl ohne requestIdToken(), es funktioniert perfekt und ich bin Benutzername bekommen, E-Mail usw. in onActivityResult Rückruf, aber das Token ist null.

Ich stellte sicher, dass beide OAuth 2.0-Client-IDs in meiner Web-Konsole mit denen übereinstimmen, die ich in meiner Anwendung verwenden:

OAuth 2.0 client IDs in my web console

ich google-services.json auch, dass die neuen Änderungen heruntergeladen und kopiert es in meinen "mobilen" Ordner des Projekts.

google-services.json I downloaded from firebase console

Ich habe in den unten stehenden Links, um alle Antworten versucht, aber nichts mein Problem gelöst.

Bitte Hilfe!

Links:

  1. Google Sign-In requestIdToken returns null
  2. New Google sign in Android
  3. Error 12501 authenticating with google sign-in

Antwort

2

Ich habe es herausgefunden.

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

war außerhalb des OnCreate() Verfahrens wird ein globales Element mSignInOpt Bedeutung für diese Aktivität ist, und es so konfiguriert ist, wenn die Aktivität erzeugt wird.

Aus irgendeinem Grund .requestIdToken(getString(R.string.default_web_client_id)) kann in diesem Fall nicht aufgerufen werden (ohne requestIdToken() funktioniert es gut).

Um den Fehler zu beheben, habe ich diese paar Zeilen Code in OnCreate() Methode verschoben und jetzt funktioniert es!

0

Leider habe ich genug rep nicht für einen Kommentar, aber können Sie etwas tun, wie

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

und es gibt eine gültige Antwort? oder funktioniert es überhaupt nicht?

Ich würde versuchen, this für weitere Hilfe zu suchen.

+0

ich das versucht. Ich bekomme die gleiche Ausnahme auf .requestIdToken (getString (R.string.default_web_client_id)) – MiSo

0

Sie diese Zeile in build.gradle fehlt Anwendung Plugin: 'com.google.gms.google-services'