最近,我正在与angularx-social-login合作登录谷歌。它在本地运行良好,但是当我在Google (Window 12)实例的IIS上部署我的角项目时,我发现了一个问题。只要我停留在我的主机和登录,它仍然有效。但是,当我尝试从其他计算机登录时,它会返回400错误。我是否在任何阶段都错了,或者的实例实际上阻止了我从我的计算机发送的一些请求。我到处搜索,我也设置了Authorised JavaScript origins,但是它不能解决我的问题。有人能帮我吗?谢谢
这是我用的角度的方法
signInWithGoogle(): void {
this.authService.signIn(GoogleLoginProvider.PROVIDER_ID)
.then((x) => {
console.log('loggedIn', x);
this.user = x;
this.sendToRestApiMethod(this.user.idToken);
}).catch((x) => {
console.log('error', x);
});
}奖金
当我在主机上点击登录按钮时,重定向的网址将是https://accounts.google.com/signin/oauth
但是,当我尝试从其他机器登录并单击同一个登录按钮时,它将返回https://accounts.google.com/o/oauth2。
奖金2:我发现了一些东西,这是因为angular登录。通常,如果我键入域名,它将重定向到主机的IP地址。但是当调用角的动作时,它实际上根据主机的IP地址而不是域名发送oauth请求。如果我将etc/host内部主机的IP更改为域名,它就能正常工作(因为它使用的是实名而不是公共IP地址)。
详细结果:
发布于 2019-08-29 10:47:03
经过几天的挫折,我找到了解决办法。这是因为每次被调用时我都会设置域,它会重定向到主机的ip地址。因此,Angular在调用身份验证时(当您调用上述事件时)会自动读取公共ip address,而不是您的域名,当然它不允许您这样做(谷歌登录电子邮件确实需要真正的域名而不是公共ip地址)。要解决这个问题,我只需要获取Google Cloud实例的域名服务器,然后在我创建域名的地方定制它们。
https://stackoverflow.com/questions/57640726
复制相似问题