我尝试使用github设置身份验证。 我跟着documentation。我已经安装了这些软件包:
$> meteor add accounts-github
$> meteor add service-configuration
我在server/github.js
中的代码如下:
ServiceConfiguration.configurations.remove({
service: "github"
});
ServiceConfiguration.configurations.insert({
service: "github",
clientId: '****',
secret: '*************'
});
Meteor.loginWithGithub({
requestPermissions: ['user', 'public_repo']
}, function (err) {
if (err)
Session.set('errorMessage', err.reason || 'Unknown error');
});
当我启动meteor时,我收到以下错误:
/Users/me/.meteor/tools/5bf1690853/lib/node_modules/fibers/future.js:173
throw(ex);
^
TypeError: Object #<Object> has no method 'loginWithGithub'
at app/server/github.js:11:8
at app/server/github.js:18:3
....
所以似乎Meteor
对象没有loginWithGithub
方法。有什么建议吗?
答案 0 :(得分:3)
您正在应用的/server
目录中运行代码。
通常您从Web浏览器调用此代码,以使Meteor显示Github OAuth登录对话框。
这在服务器上不可用,因为它只能在浏览器端工作。这就是您看到此错误的原因。
您通常会在事件侦听器中触发Meteor.loginWithGithub()
,以便他们在单击按钮或某个UI元素时开始登录过程。
要记住的另一件事是Session
(Session.get
,Session.set
等)也只能在客户端上工作。
要查看哪些方法在使用Meteor documentation的位置运行。在每个方法的上角,它显示了代码可以运行的位置:Client,Server或Anywhere。