0

我正在使用DracoBlue node-facebook-clientpassport.js来验证用户进入我的应用程序,然后检查他们是否是特定组的成员。

我检索用户个人资料和访问令牌,然后使用 facebook_client 尝试使用访问令牌进行会话。

我不确定会话是否正确创建,因为当我尝试使用 graphCall 方法时,它会引发以下错误:

"500 TypeError: Object function (cb) { var session = new FacebookSession(self, access_token); cb(session); } has no method 'graphCall'"

可在此处找到进一步的信息来源。

虽然不是一个php问题。这是 php facebook 客户端 api 的 node.js 端口,因此使用它的人可能遇到了同样的问题。

任何帮助是极大的赞赏。

谢谢。

/* get the facebook client using ID and secret */
var facebook_client = new FacebookClient(
    clientID, // configure like your fb app page states
    clientSecret, // configure like your fb app page states
    {
        "timeout": 10000 // modify the global timeout for facebook calls (Default: 10000)
    }
);

/*
 * Define the facebook stragety
 */
passport.use(new FacebookStrategy({
    clientID: clientID,
    clientSecret: clientSecret,
    callbackURL: "http://localhost:3000/auth/facebook/callback",
    scope: 'user_groups'      //Ask user to access their groups. Used for finding whether user is member of group
  },
  function(accessToken, refreshToken, profile, done) {
    console.log('accessToken: ' + accessToken);
    console.log('facebook_client: ' + facebook_client);
    var facebook_session = facebook_client.getSessionByAccessToken(accessToken);
    console.log('facebook_session: ' + facebook_session);
    facebook_session.graphCall('/me?fields=groups')(function(result){
      if(!result.error)
      {
        console.log(groups.data);
      }
      else
      {
        console.log('Error: ' + result.error.message);
        console.log('nane: ' + result.data); 
      }
    });

    console.log('profile.groups ' + profile.user_groups);
    console.log('accessToken ' + accessToken);
    console.log('refreshToken ' + refreshToken);
    done(null, profile);
  }
));
4

1 回答 1

0

语法不正确。

要检索会话,我必须编写以下内容:

facebook_client.getSessionByAccessToken(accessToken)(function(session){
 });

我对 node.js 比较陌生,总是忘记我需要使用回调。

于 2013-06-10T20:19:10.543 回答