파이어베이스 페이스북 로그인을 하려 합니다. 애뮬레이터는 실행이 잘됩니다.
하지만 핸드폰에서는 실행이 안됩니다. 찾아보니 api31이상은 FLAG_IMMUTABLE 또는 FLAG_MUTABLE 을 지정해야 한다고 합니다. FLAG_IMMUTABLE를 사용하려 하는데 어떻게 해야 하는지 모르겠습니다.
핸드폰으로 하면
callbackManager.onActivityResult(requestCode,resultCode,data);
이 부분에서 오류가 발생합니다.
어떻게 해결 해야 하나요....
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) {
}
}
}