마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

FLAG_IMMUTABLE 사용방법

0 추천

파이어베이스 페이스북 로그인을 하려 합니다. 애뮬레이터는 실행이 잘됩니다.

하지만 핸드폰에서는 실행이 안됩니다. 찾아보니 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) {
            }
        }
    }

 

개미1 (1,260 포인트) 님이 2022년 6월 30일 질문

2개의 답변

0 추천
FLAG_MUTABLE 이슈는 PendingIntent와 관련이 있구요, 주로 Push Notification 서비스에 사용이 됩니다. 코드를 봐서는 PendingIntent를 사용하는 부분이 안보이는데, 혹 FirebaseMessage를 같이 사용하고 계신건 아닌지 모르겠네요. 그리고 라이브러리에서 발생하는 문제라면 먼저 Firebase 라이브러리 릴리즈 노트를 확인하셔서 최신 버전으로 라이브러리를 업데이트 해보시는 건 어떨까 싶네요. 해당 문제가 발생했다면, 분명 Firebase 에서도 관련 패치가 있었을 것 같은데요.
spark (226,420 포인트) 님이 2022년 7월 1일 답변
StackOverflow를 찾아보니 관련 질문이 있네요.
https://stackoverflow.com/questions/72751904/firebase-authentication-is-not-working-on-android-12-targeting-s-requires-that
Firebae ui에서 관련 이슈가 발생하는 것 같구요, 최신버전으로 업데이트 하시면 해결이 될 것 같은데요.
0 추천
페이스북 라이브러리 뭐쓰시죠?
ssik 님이 2022년 9월 26일 답변
...