我正在使用DracoBlue node-facebook-client和passport.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);
}
));