从移动设备打开时,Firebase 无法在我的网站上运行

问题描述 投票:0回答:1

在我的网站注册页面中, 我正在使用 firebase auth for web(@angular/fire 版本用于 Angular 网站)来使用 Google Signup 来注册用户,我正在使用 SignInWithPopup 函数来完成此操作。

这是我的 AuthService 类:

@Injectable({
  providedIn: 'root'
})
export class AuthService {

  constructor(
    private afAuth: AngularFireAuth,
    private http: HttpClient
  ) {}

  private readonly api_url: string = environment.apiUrl

  async googleAuth() {
    return await this.afAuth.signInWithPopup(new GoogleAuthProvider())
  }

  etc ...

并在signup.component.ts中像这样使用它:

  googleUserSubmitted() {

    this.loadingGoogleUser = true

    this.signupWithGoogle()
      .then((res) => {

        res.user?.getIdToken()
          .then((token) => {

            this.googleForm.patchValue({
              email: res.user?.email,
              name: res.user?.displayName,
              tokenID: token
            })

          })
          .finally(() => {
            this.loadingGoogleUser = false
          })

      })
      .catch(() => {
        this.loadingGoogleUser = false
      })
}

当使用chrome或firefox浏览器时,此功能在我的笔记本电脑上正常工作。 但是当我尝试从我的 Android 设备注册时出现问题,我使用 USB 调试检查了控制台,看看这样做时遇到了什么错误。我看到了以下内容:

从源“https://sakostore-bd7ad.firebaseapp.com”访问“https://www.googleapis.com/identitytoolkit/v3/relyingparty/getProjectConfig?key=MY_API_KEY_HERE”处的 XMLHttpRequest 已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。

我试图解决这个问题但遗憾的是没有成功:

  • 我试过华为和三星的移动设备,问题都是一样的
  • 我已检查 Firebase 控制台中的授权域及其是否正确列出
  • 我已允许第三方 cookie 和弹出窗口

一些背景信息可以帮助您理解问题:

angular firebase nginx firebase-authentication cors
1个回答
0
投票

我终于找到了解决方案。 我忘记尝试连接到 VPN。 居住在叙利亚时,将网站与 Firebase Web 应用程序实例连接时存在一些限制。 我的移动设备未连接到任何 VPN 。所以

GoolgeAuthProvider()
任何 Firebase 服务都无法正常工作。 看来是地区问题

© www.soinside.com 2019 - 2024. All rights reserved.