Как заставить Firebase работать с паролем без пароля в Expo for Web? - PullRequest
0 голосов
/ 21 января 2020

Я изо всех сил стараюсь, чтобы поток 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
  }
  1. Почему isSignInWithEmailLink не распознает URL?
  2. Есть ли рекомендуемый способ внедрения без пароля в сети?
  3. Должен ли я смотреть на ссылки Dynami c firebase? Я сохранил это на потом, потому что в настоящее время я тестирую логин только в сети. Dynami c Ссылки казались необходимыми для того, чтобы они работали на всех платформах, правильно, но разве они не могли бы работать без Интернета?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...