【发布时间】: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