Created
April 1, 2018 09:36
-
-
Save alfianyusufabdullah/40fff1006e0273cd5b0aab29a79f287d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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