1

Я аутентифицировал своего пользователя с помощью стратегии Facebook и получил информацию о пользователе. Мое приложение теперь должно ударить другие конечные точки графика api на Facebook. Я не вижу способа получить доступ к инструменту для отправки запросов на график Facebook api. Изучив Стратегию немного дальше, я вижу, что все построено вокруг стратегии OAuth 2.Как использовать API Facebook Graph после аутентификации с помощью стратегии facebook в Passport.js?

1) Как использовать стратегию facebook для вызова других конечных точек графика api?

2) Должен ли я проснуться в паспорте api где-нибудь, чтобы получить доступ к связанному с ним объекту oauth, чтобы это произошло?

Или я думаю об этом неправильно, и я должен получить токен доступа пользователя и использовать другую стороннюю библиотеку для запроса facebook api?

ответ

2

Последний, вам нужен токен доступа, а затем вы можете просто отправить обычный запрос с ванилью или любым lib, который вы хотите (мне лично нравится крушение).

Это будет выглядеть так, то:

Wreck.get('https://graph.facebook.com/me?access_token=' + access_token, function(err, res, payload) { }); 
0

С 'паспортного' facebook стратегии:

маркер доступа возвращается вместе с профилем.

Допустим, вы настроили следующее:

// .: 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) 
}) 
Смежные вопросы