[英]Is it possible to use Facebook clientId and clientSecret which stored in the database in passport.js Facebook Strategy
[英]How to use Facebook Graph API after authenticating with Passport.js facebook strategy?
我已使用Facebook策略對用戶進行身份驗證,並獲得了他們的用戶信息。 我的應用程序現在需要訪問Facebook上的其他圖形api端點。 我沒有找到訪問向Facebook圖形API發送請求的工具的方法。 在進一步研究該策略后,我發現一切都是圍繞OAuth 2策略構建的。
1)如何使用facebook策略來調用其他圖形api端點?
2)我是否應該在某個地方鑽探通行證api以便在某個地方訪問相關的oauth對象以實現此目的?
還是我在想這個錯誤,我應該獲取用戶的訪問令牌並使用另一個第三方庫來查詢Facebook API?
后者,您只需要訪問令牌,然后您就可以發送帶有香草或您想要的每個庫的正常請求(我個人喜歡wreck)。
然后看起來像這樣:
Wreck.get('https://graph.facebook.com/me?access_token=' + access_token, function(err, res, payload) { });
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);
}
令牌包含在配置文件對象中,該對象將傳遞到您決定的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)
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.