Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Meteor.user在(显然)成功登录后为空_Javascript_Login_Meteor_Google Oauth - Fatal编程技术网

Javascript Meteor.user在(显然)成功登录后为空

Javascript Meteor.user在(显然)成功登录后为空,javascript,login,meteor,google-oauth,Javascript,Login,Meteor,Google Oauth,我有一个简单的Meteor js应用程序,允许您创建一个用户帐户并登录,或者通过oauth使用现有的Google帐户登录(多亏了帐户Google软件包) 使用应用程序时,我输入用户名和密码,一切正常。但是,当我单击“使用谷歌登录”时,谷歌oauth弹出窗口要求我选择要用于此登录的谷歌帐户。我选择了帐户,弹出窗口等待一秒钟,关闭,然后什么也没发生。没有被阻止的弹出窗口,没有“登录失败”消息。好像什么都没发生过 我确信在我使用oauth登录时从未定义用户,因为Meteor.user()在JS控制台中

我有一个简单的Meteor js应用程序,允许您创建一个用户帐户并登录,或者通过oauth使用现有的Google帐户登录(多亏了
帐户Google
软件包)

使用应用程序时,我输入用户名和密码,一切正常。但是,当我单击“使用谷歌登录”时,谷歌oauth弹出窗口要求我选择要用于此登录的谷歌帐户。我选择了帐户,弹出窗口等待一秒钟,关闭,然后什么也没发生。没有被阻止的弹出窗口,没有“登录失败”消息。好像什么都没发生过

我确信在我使用oauth登录时从未定义用户,因为
Meteor.user()
在JS控制台中为我提供了
null

这到底是怎么回事?或者我该如何调试它?欢迎提出建议


p、 如果需要任何其他信息,我可以发邮件。

您可能在Meteor端或Google开发者控制台端搞乱了oauth配置,因此这里是一个快速回顾

谷歌开发者控制台:

在API&auth>Credentials下,在OAuth部分中创建一个新的客户端ID

选择Web应用程序并指定正确的重定向URI和JavaScript来源:

重定向URI

http://localhost:3000/_oauth/google?close
http://your-production-domain.com/_oauth/google?close
JAVASCRIPT的起源

http://localhost:3000
http://your-production-domain.com
流星配置:

请确保添加以下软件包:

meteor add accounts-google
meteor add service-configuration
在server/config.js中,从

clientId和secret字段应设置为Google开发者控制台中的字段


然后在登录表单的点击处理程序中调用Meteor.loginWithGoogle(),它应该可以正常工作。

添加oauth设置代码总是很有帮助的,并且要注意,必须在Google开发者控制台中进行适当的配置。它现在似乎可以工作,但我不确定为什么。不管怎样,这都是比官方文件更好的信息。谢谢。如果我在远程计算机上使用公共URL进行开发,有没有办法将开发人员回调URL更改为非本地主机?我知道这是一条老线索,但在搜索中找不到答案。
ServiceConfiguration.configurations.remove({
  service: "google"
});
ServiceConfiguration.configurations.insert({
  service: "google",
  clientId: "????????????????.apps.googleusercontent.com",
  secret: "????????????????"
});