0

此截屏视频展示了如何从外部身份验证中检索其他用户配置文件属性。但我不明白每次用户使用可能更新的配置文件属性登录时如何更新用户帐户?onCreateUser每次用户进行身份验证时调用还是第一次调用?据我了解,这只是第一次。那么我怎样才能进入登录过程来更新属性呢?

4

1 回答 1

0

您需要在有人登录时挂钩,然后手动更新属性。

首先,您需要知道用户何时登录的信息。目前,您可以使用基于客户端的解决方案(在成功登录时第二次调用服务器),使用类似流星的东西或通过编辑核心包并将它们放在您的/packages目录中。

当用户登录时,使用文件更改accounts-baseaccounts-server.js以创建“挂钩”

Meteor.methods({
    login: function(options) {
    .....
    if (result !== null)

        //Run here

        this.setUserId(result.id);
        return result;
    },
});

然后在//Run Here添加一个连接到 facebook 并获取您需要的数据的功能。或者在您决定使用meteor-prescence或类似的库或方法时从客户端调用的 Meteor.call 方法中。这将是类似的东西:

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 使用了fbgraphnode 模块(您需要安装它) - 或者使用此处描述的方法来使用没有单独包的 Npm 模块。原则上您也可以对其他提供商进行同样的操作。请注意,您不必在此处对您的提供者使用同步类型调用,因为可以在他们登录后不久更新数据。

您可以挂钩的另一个地方也在包中的_setUserId方法中livedata

于 2013-07-29T10:26:56.220 回答