从Meteor中的外部身份验证源更新属性
显示如何从外部身份验证检索其他用户配置文件属性。但我不明白,每次用户登录时,我如何用可能更新的配置文件属性更新用户帐户?从Meteor中的外部身份验证源更新属性,meteor,accounts,Meteor,Accounts,显示如何从外部身份验证检索其他用户配置文件属性。但我不明白,每次用户登录时,我如何用可能更新的配置文件属性更新用户帐户?onCreateUser是每次用户身份验证时调用还是第一次调用?据我所知,这只是第一次。那么,我如何才能连接到登录过程以更新属性呢?当有人登录时,您需要连接到,然后手动更新属性 首先,您需要知道用户何时登录的信息。目前,您可以使用基于客户端的解决方案(在成功登录后第二次调用服务器),方法是使用或编辑核心包并将其放置在/packages目录中 使用文件accounts serve
onCreateUser
是每次用户身份验证时调用还是第一次调用?据我所知,这只是第一次。那么,我如何才能连接到登录过程以更新属性呢?当有人登录时,您需要连接到,然后手动更新属性
首先,您需要知道用户何时登录的信息。目前,您可以使用基于客户端的解决方案(在成功登录后第二次调用服务器),方法是使用或编辑核心包并将其放置在/packages
目录中
使用文件accounts server.js
更改accounts base
包,以便在用户登录时创建一个“钩子”
Meteor.methods({
login: function(options) {
.....
if (result !== null)
//Run here
this.setUserId(result.id);
return result;
},
});
然后在//runhere
添加一个连接到facebook并获取所需数据的函数。或者在Meteor.call方法中,如果您决定使用Meteor Presence
或类似的库或方法,您将从客户端调用该方法。这将类似于:
if(Meteor.user().services.facebook.accessToken) {
var graph = Npm.require('fbgraph');
graph.setAccessToken(Meteor.user().services.facebook.accessToken);
graph.get('/me',{},function(err,result) {
//Update your user (you could also alter services.facebook instead
Meteor.users.update(Meteor.userId, {$set: {profile:result}});
}
}
在上面的例子中,facebook使用的是fbgraph
节点模块(您需要安装),或者使用描述的方法使用Npm模块,而不使用单独的软件包。原则上,您也可以为其他提供商提供相同的服务。注意:您不必在此处对您的提供商使用同步类型调用,因为这样可以在他们登录后很快更新数据
另一个你可以进入的地方是
\u setUserId
方法,它位于livedata
包中。如果我错了,请纠正我:不是所有与用户相关的操作都会写入你可以观察到的“用户”集合吗?@imslavko:问题是当他的个人资料@Facebook/Twitter/等出现时,如何更新用户个人资料。更改。您是否尝试从onCreateUser中删除Meteor.http.get调用并将其添加到用户登录后运行的帮助程序中?