我使用Facebook策略验证了我的用户并获得了他们的用户信息。我的应用程序现在需要在Facebook上点击其他图形api端点。我没有看到访问工具的方法来向Facebook图形api发送请求。在进一步检查策略之后,我发现一切都是围绕OAuth 2策略构建的。
1)如何使用facebook策略调用其他图形api端点?
2)我是否应该在某个地方钻进护照api以访问相关的oauth对象以实现此目的?
或者我在考虑这个错误,我应该获取用户的访问令牌并使用另一个第三方库来查询facebook api?
答案 0 :(得分:2)
后者,你只需要访问令牌然后你可以发送一个普通的请求与vanilla或你喜欢的每个lib(我个人喜欢破坏)。
那将是这样的:
Wreck.get('https://graph.facebook.com/me?access_token=' + access_token, function(err, res, payload) { });
答案 1 :(得分:0)
accessToken 与个人资料一起返回。
假设您已设置以下内容:
// .: Passport Strategy :.
const Strategy = require('passport-facebook').Strategy;
passport.use(new Strategy({
clientID:"IDxxxxxxxxxxxxxxxxxxx",
clientSecret:"SECRETxxxxxxxxxxxxxxxxxxx",
profileFields: ['id', 'displayName', 'name', 'picture.type(large)', 'emails'],
callbackURL:"http://localhost:1337/login/facebook/return"
}, FacebookAccess )
)
function FacebookAccess(accessToken, refreshToken, profile, cb){
// accessToken : valid FB.GraphAPI token
// refreshToken : undefined for Facebook
profile.token = accessToken
return cb(null, profile);
}
令牌包含在 profile 对象中,该对象传递给 您决定的 passport.serializeUser 功能,例如:
passport.serializeUser(function(user, cb){
var platform_user = {
fbid:user.id,
name:user.displayName,
mail:user.emails[0].value,
token:user.token,
avtr:user.photos[0].value
}
cb(null, platform_user)
})