Sie GoogleSignInResult
über 2 Wege erhalten können zu authentifizieren.
i) Durch Eingabe der E-Mail-ID und des Passworts in den Google-Anmeldebildschirm.
ii) Durch Auswahl eines Kontos von bereits eingeloggtem Konto im Telefon.
Ich habe den zweiten Ansatz verwendet, um Zugriffstoken zu erhalten und Benutzer zu authentifizieren.
für mehr Unterstützung Referenzen Links sind unten angegeben.
google sign in link 1
Stackoverflow - token refresh
google auth provider documentation
server side token verification docs
, wenn Ihr einziges Ziel ist es, Token zu bekommen, so können Sie auch this github source versuchen.
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.build();
// Verwenden Sie die Anmeldeoption, um einen API-Client zu erstellen.
mGoogleApiClient = new GoogleApiClient.Builder(this)
.enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */)
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.build();
private void signIn() {
Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
startActivityForResult(signInIntent,RC_SIGN_IN); }
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...);
if (requestCode == RC_SIGN_IN){
GoogleSignInResult result =Auth.GoogleSignInApi.getSignInResultFromIntent(data);
handleSignInResult(result);
}
private void handleSignInResult(GoogleSignInResult result) {
Log.d(TAG, "handleSignInResult:" + result.isSuccess());
if (result.isSuccess()) {
// Signed in successfully, show authenticated UI.
GoogleSignInAccount acct = result.getSignInAccount();
} else {
// Signed out, show unauthenticated.
}
}
// get authentifizierten
AuthCredential credential =
GoogleAuthProvider.getCredential(acct.getIdToken(), null);
FirebaseAuth.getInstance().getCurrentUser().reauthenticate(credential)
.addOnCompleteListener(new OnCompleteListener<Void>() {
// add your job here on authenticated
}
// if token is obsoleted then you can do this
credential.refreshToken();
accessToken = credential.getAccessToken();
Ich erinnere mich nicht, was ich am Ende tun (es vor 4 Monaten ist), aber ich glaube, ich brauchte etwas statisch, dass ich verwenden könnte, wann immer ich will, und nicht nur bei der Anmeldung (zum Beispiel wenn der Benutzer seinen Account löschen wollte). Wie auch immer, weil ich nicht mehr daran arbeite, wenn jemand glaubt, dass dies die richtige Antwort ist, werde ich es als Antwort wählen. –