【问题标题】:Firebase Auth not working well in android webviewFirebase Auth 在 android webview 中无法正常工作
【发布时间】:2021-06-30 14:21:05
【问题描述】:

我正在使用 Firebase 后端构建一个 webapp(html、css、js)。如果网站是从浏览器打开的,一切正常,如果用户登录,它会将用户重定向到另一个页面。但是,如果我使用来自 android 应用程序(使用 webview)的同一站点,则重定向不起作用。知道为什么吗?

我在android studio中使用的代码:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);

        setContentView(R.layout.activity_main);
        web = findViewById(R.id.webView);
        WebSettings webSettings = web.getSettings();
        webSettings.setJavaScriptEnabled(true);
        web.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
                view.loadUrl(request.getUrl().toString());
                return false;
            }
        });
        web.setWebChromeClient(new WebChromeClient() {
            @Override
            public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
                return super.onJsAlert(view, url, message, result);
            }
        });
        web.loadUrl("http://mywebsite.com/login");
        web.getSettings().setAppCacheEnabled(false);
        web.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);

        web.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                return (event.getAction() == MotionEvent.ACTION_MOVE);
            }
        });



    }

这就是重定向的工作原理:

function loginUser() {
  emailVal = document.getElementById("email").value;
  passwordVal = document.getElementById("password").value;
  firebase.auth().signInWithEmailAndPassword(emailVal, passwordVal)
  .then((userCredential) => {
    
    var user = userCredential.user;
  })
  .catch((error) => {
    
  });
}

firebase.auth().onAuthStateChanged((user) => {
  if (user) {
    window.location.replace('http://mywebsite.com/home');
  }
});

【问题讨论】:

  • 你真的应该添加一些代码来显示你想要做什么。
  • 对不起,我编辑了它
  • 不用问对不起 :) +1 更新问题。

标签: javascript android firebase redirect firebase-authentication


【解决方案1】:

所以,在进行了一些谷歌搜索之后,我发现了这个 StackOverflow 主题: firebase google authentication in web does not work on android app webview

问题是我没有启用 DOM 存储。通过将这两行插入我的 Java 代码解决了这个问题:

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

【讨论】:

    猜你喜欢
    • 2021-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-16
    • 2018-07-02
    • 2018-06-09
    • 1970-01-01
    相关资源
    最近更新 更多