Я изо всех сил стараюсь, чтобы поток Firebase без паролей работал с Expo on Web. Хотелось бы получить несколько советов.
Сначала , это возвращает exp://
ссылку
const expoLink = Linking.makeUrl('your/expo/link');
За ней нельзя следовать в Интернете, поэтому я изменил код сервера чтобы проверить user-agent во время перенаправления и изменить протокол на http, если на рабочем столе.
//import functions from 'firebase-functions';
const functions = require('firebase-functions');
import url from 'url';
import express from 'express';
import ua from 'express-mobile-redirect';
const redirectApp = express();
redirectApp.use(ua.is_mobile());
redirectApp.use(ua.is_tablet());
redirectApp.get("*", (req, res) => {
const { query } = url.parse(req.url, true);
const { redirectUrl, ...rest } = query;
if (!redirectUrl) {
res.writeHead(400);
res.end('You must provide a `redirectUrl` in the query');
return;
}
const parsedUrl = url.parse(redirectUrl);
// This is the code in question:
if (!req.is_mobile && !req.is_tablet) {
parsedUrl.protocol = 'http';
}
const Location = url.format(parsedUrl);
res.writeHead(302, { Location });
res.end(`Redirecting to ${Location}`);
})
export const redirect = functions.https.onRequest(redirectApp)
Но теперь , Firebase JS не принимает ссылку в качестве входа url и не будет завершен sh auth:
if (!firebase.auth().isSignInWithEmailLink(expoUrl)) {
// Always gets here
return
}
// Never gets here
return finishSigninWithEmailUrl(email, url);
Я подумал, что это могло быть из-за того, что у URL теперь другой протокол, поэтому я также попробовал:
const expoUrl = url.replace(/https?/, 'exp');
if (!firebase.auth().isSignInWithEmailLink(expoUrl)) {
// Still always goes here
return
}
- Почему
isSignInWithEmailLink
не распознает URL? - Есть ли рекомендуемый способ внедрения без пароля в сети?
- Должен ли я смотреть на ссылки Dynami c firebase? Я сохранил это на потом, потому что в настоящее время я тестирую логин только в сети. Dynami c Ссылки казались необходимыми для того, чтобы они работали на всех платформах, правильно, но разве они не могли бы работать без Интернета?