在我的网站注册页面中, 我正在使用 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”标头。
我试图解决这个问题但遗憾的是没有成功:
一些背景信息可以帮助您理解问题:
我终于找到了解决方案。 我忘记尝试连接到 VPN。 居住在叙利亚时,将网站与 Firebase Web 应用程序实例连接时存在一些限制。 我的移动设备未连接到任何 VPN 。所以
GoolgeAuthProvider()
任何 Firebase 服务都无法正常工作。
看来是地区问题