상세 컨텐츠

본문 제목

페이스북 로그인시 모바일웹에서는 되는데 웹뷰에서는 안될때, webview facebook login

IT공부방/하이브리드앱

by 동해둘리 2018. 12. 18. 05:32

본문

반응형



안드로이드 웹뷰 (Webview) 를 이용하여 페이스북 로그인시 

브라우저(크롬)에서는 제대로 동작을 하는데, 웹뷰에서는 안되는 경우가 있습니다.



로그인 상태를 확인해보면 connected 값이 나오지만, 


아래와 같은 메시지가 뜨기도 하고

you are not logged in. please login and try again facebook


다음과 같은 메시지가 뜨기도 합니다. 

Unsafe JavaScript attempt to initiate navigation for frame with URL 



이때, getLoginStatus 의 결과값을 확인해보면 unknown 이 나오는 걸 볼 수 있습니다.


이와 같은 현상이 생기는 이유는 두가지로 볼 수 있습니다


1. 서로다른 도메인이 연결되는 mixed contents

2. cookie 값이 저장되지 않음


이를 해결하기 위해서는 다음과 같이 webview 클래스에 코드를 추가하면 됩니다.



    import android.webkit.CookieManager;


    @Override

    protected void onCreate(Bundle savedInstanceState) {


        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        mWebView = findViewById(R.id.web_view);


        WebSettings webSettings = mWebView.getSettings();

        webSettings.setJavaScriptEnabled(true);



        mWebView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);


        CookieManager cookieManager = CookieManager.getInstance();

        cookieManager.setAcceptCookie(true);

        cookieManager.setAcceptThirdPartyCookies(mWebView, true);


        if (savedInstanceState == null) {

            mWebView.post(new Runnable() {

                @Override

                public void run() {

                    mWebView.loadUrl("http://도메인");

                }

            });

        }


        mWebView.setWebChromeClient(new WebChromeClient());


    }





반응형

관련글 더보기

댓글 영역