Skip to content

Instantly share code, notes, and snippets.

@alfianyusufabdullah
Created April 1, 2018 09:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alfianyusufabdullah/40fff1006e0273cd5b0aab29a79f287d to your computer and use it in GitHub Desktop.
Save alfianyusufabdullah/40fff1006e0273cd5b0aab29a79f287d to your computer and use it in GitHub Desktop.
package com.alfianyusufabdullah.firebaseauthwithgoogle;
import android.content.Intent;
import android.support.annotation.NonNull;
import android.support.v4.app.FragmentActivity;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import com.google.android.gms.auth.api.Auth;
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
import com.google.android.gms.auth.api.signin.GoogleSignInResult;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.SignInButton;
import com.google.android.gms.common.api.Api;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.common.api.PendingResult;
import com.google.android.gms.common.api.ResultCallback;
import com.google.android.gms.common.api.Status;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthCredential;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.auth.GoogleAuthCredential;
import com.google.firebase.auth.GoogleAuthProvider;
import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.concurrent.TimeUnit;
public class MainActivity extends AppCompatActivity {
TextView authUsename, authEmail, authProfilPic, authToken;
Button btnLogout;
SignInButton btnSingIn;
public static final int RequestSignInCode = 7;
public FirebaseAuth firebaseAuth;
public GoogleApiClient googleApiClient;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
authUsename = findViewById(R.id.authUsername);
authEmail = findViewById(R.id.authEmail);
authProfilPic = findViewById(R.id.authProfilPic);
authToken = findViewById(R.id.authToken);
btnLogout = findViewById(R.id.btnLogout);
btnLogout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
firebaseAuth.signOut();
Auth.GoogleSignInApi.signOut(googleApiClient).setResultCallback(new ResultCallback<Status>() {
@Override
public void onResult(@NonNull Status status) {
authUsename.setText("Username");
authEmail.setText("Email");
authProfilPic.setText("Profil Pic");
authToken.setText("Token");
}
});
}
});
btnSingIn = findViewById(R.id.btnSignin);
btnSingIn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent auth = Auth.GoogleSignInApi.getSignInIntent(googleApiClient);
startActivityForResult(auth, RequestSignInCode);
}
});
TextView textView = (TextView) btnSingIn.getChildAt(0);
textView.setText("Masuk Dengan Google");
firebaseAuth = FirebaseAuth.getInstance();
GoogleSignInOptions googleSignInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken("idtoken")
.requestEmail()
.build();
googleApiClient = new GoogleApiClient.Builder(this)
.enableAutoManage(this, new GoogleApiClient.OnConnectionFailedListener() {
@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
Log.i("MAINACTIVITY", "onConnectionFailed: " + connectionResult.getErrorMessage());
}
})
.addApi(Auth.GOOGLE_SIGN_IN_API, googleSignInOptions)
.build();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RequestSignInCode) {
GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
if (result.isSuccess()) {
GoogleSignInAccount account = result.getSignInAccount();
if (account != null) {
AuthCredential credential = GoogleAuthProvider.getCredential(account.getIdToken(), null);
firebaseAuth.signInWithCredential(credential).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user != null) {
authUsename.setText(user.getDisplayName());
authEmail.setText(user.getEmail());
authToken.setText(user.getUid());
if (user.getPhotoUrl() != null)
authProfilPic.setText(user.getPhotoUrl().getEncodedPath());
}
}
}
});
}
} else {
Log.i("MAINACTIVITY", "Login Status " + result.getStatus().getStatusMessage());
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment