Веб-регистрация Flutter firebase_auth с google-заголовком «Access-Control-Allow-Credentials» в ответе «» (пусто) - PullRequest
2 голосов
/ 07 марта 2020

Я пытаюсь запустить Flutter Web с firebase_auth и войти в систему с помощью Google, но получаю: заголовок «Access-Control-Allow-Credentials» в ответе «» (пусто)

Я используя для входа метод

google_sign_in: ^4.1.4
firebase_auth: ^0.15.5+2
firebase_core: ^0.4.4+2

:

Future<FirebaseUser> handleSignIn() async {
    final GoogleSignInAccount googleUser = await _googleSignIn.signIn();
    final GoogleSignInAuthentication googleAuth = await googleUser.authentication;

    final AuthCredential credential = GoogleAuthProvider.getCredential(
      accessToken: googleAuth.accessToken,
      idToken: googleAuth.idToken,
    );

    user = (await _auth.signInWithCredential(credential)).user;
    print("signed in " + user.displayName);
    return user;
  }

Я настроил веб-приложение в консоли Firebase и добавил конфигурацию в web / index. html:

  <script src="https://www.gstatic.com/firebasejs/7.9.3/firebase-app.js"></script>
  <script src="https://www.gstatic.com/firebasejs/7.9.3/firebase-analytics.js"></script>
  <script src="https://www.gstatic.com/firebasejs/7.9.3/firebase-auth.js"></script>

  <script>
    // Your web app's Firebase configuration
    var firebaseConfig = {
      apiKey: ...,
      authDomain: ...,
      databaseURL: ...,
      projectId: ...,
      storageBucket: ...,
      messagingSenderId: ...,
      appId: ...,
      measurementId: ...
    };
    // Initialize Firebase
    firebase.initializeApp(firebaseConfig);
    firebase.analytics();
  </script>
  <script src="main.dart.js" type="application/javascript"></script>

Но когда я звоню сначала, он показывает мне, чтобы выбрать учетную запись, но после этого он возвращается с ошибкой:

FirebaseError: A network error (such as timeout, interrupted connection or unreachable host) has occurred. (auth/network-request-failed)

И в консоли с Chrome я вижу:

    Access to fetch at 'https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyAssertion?..' 
    from origin 'https://...firebaseapp.com' has been blocked by 
    CORS policy: Response to preflight request doesn't pass access 
control check: The value of the 'Access-Control-Allow-Credentials' header in the 
response is '' which must be 'true' when the request's credentials mode is 'include'.

Я протестировал приложение на Android, и оно вошло в систему.

1 Ответ

1 голос
/ 24 марта 2020

У меня был раздел перезаписей в моей базе данных. json файл.

"rewrites": [
  {
    "source": "**",
    "destination": "/index.html"
  }
]

Я думаю, что это тоже переписывало URL аутентификации? Как только я удалил это, аутентификация работала для меня.

...