private
void
facebookLogin() {
loginManager.getInstance()
.logInWithReadPermissions(
this
, Arrays.asList(
"email"
,
"public_profile"
));
loginManager.getInstance()
.registerCallback(callbackManager,
new
FacebookCallback<LoginResult>() {
@Override
public
void
onSuccess(LoginResult loginResult) {
handleFacebookAccessToken(loginResult.getAccessToken());
}
@Override
public
void
onCancel() {
}
@Override
public
void
onError(FacebookException error) {
}
});
}
private
void
handleFacebookAccessToken(AccessToken accessToken) {
AuthCredential credential = FacebookAuthProvider.getCredential(accessToken.getToken());
mFirebaseAuth.signInWithCredential(credential)
.addOnCompleteListener(
this
,
new
OnCompleteListener<AuthResult>() {
@Override
public
void
onComplete(
@NonNull
Task<AuthResult> task) {
if
(task.isSuccessful()) {
Toast.makeText(Login.
this
,
"로그인성공"
, Toast.LENGTH_SHORT).show();
FirebaseUser user = mFirebaseAuth.getCurrentUser();
updateUI(user);
}
else
{
Toast.makeText(Login.
this
,
"로그인실패"
, Toast.LENGTH_SHORT).show();
updateUI(
null
);
}
}
});
}
@Override
public
void
onStart() {
super
.onStart();
FirebaseUser currentUser = mFirebaseAuth.getCurrentUser();
updateUI(currentUser);
}
@Override
public
void
onActivityResult(
int
requestCode,
int
resultCode, Intent data) {
super
.onActivityResult(requestCode, resultCode, data);
try
{
callbackManager.onActivityResult(requestCode,resultCode,data);
}
catch
(Exception e){
Toast.makeText(Login.
this
,
"오류"
, Toast.LENGTH_SHORT).show();
Log.e(
" 오류"
,
"onActivityResult: "
+e);
}
if
(requestCode == RC_SIGN_IN) {
Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
try
{
GoogleSignInAccount account = task.getResult(ApiException.
class
);
firebaseAuthWithGoogle(account);
}
catch
(ApiException e) {
}
}
}