簡體   English   中英

通過Passport.js Facebook策略進行身份驗證后,如何使用Facebook Graph API?

[英]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) { });

使用“ passport-facebook”策略:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM