网络中的Firebase Google身份验证在Android应用程序Webview上不起作用

时间:2019-07-06 15:45:08

标签: javascript android firebase-authentication android-webview

我正在创建一个使用Firebase Google身份验证登录的网站。在所有浏览器中都可以正常工作。但是,当我将该网站作为webview添加到应用程序中时,它将无法正常工作。

显示此错误的网站:

  

在运行该应用程序的环境中不支持此操作。 “ location.protocol”必须为http,https或chrome-extension,并且必须启用网络存储。

以下代码如下:

javascript代码:

function login(){
    console.log('login called');
    function newLoginHappend(user){
        if(user){
            model_questions(user);
        }else{
            var provider = new firebase.auth.GoogleAuthProvider();

            firebase.auth().signInWithPopup(provider).then(function(result) {
              // This gives you a Google Access Token. You can use it to access the Google API.
              var token = result.credential.accessToken;
              // The signed-in user info.
              var user = result.user;
              // ...
            }).catch(function(error) {
              // Handle Errors here.
              var errorCode = error.code;
              var errorMessage = error.message;
              // The email of the user's account used.
              var email = error.email;
              // The firebase.auth.AuthCredential type that was used.
              var credential = error.credential;
              // ...
            });
        }
    }

    firebase.auth().onAuthStateChanged(newLoginHappend);
}

window.onload = login();

网络视图代码:

   WebSettings webSettings =webView.getSettings();
   webSettings.setJavaScriptEnabled(true);
   webView.setWebViewClient(new WebViewClient());
   webView.loadUrl("https://mahmud-cse16.github.io/CBAP_Handout/");

有什么方法或技术可以解决此问题?如果您有任何想法,请与我们分享。

谢谢

1 个答案:

答案 0 :(得分:0)

尝试为Webview启用DOM存储

WebSettings webSettings = myWebView.getSettings();
webSettings.setDomStorageEnabled(true);   // localStorage

设置是否启用DOM存储API。默认值为false。

Android Developer Reference