Где / как указать версию API с помощью passport.js

Я использую passport.js а также passport-facebook для входа в мое веб-приложение Node.js. Это простой запрос на вход в систему (меня интересует только один и тот же уникальный идентификатор каждый раз, когда один и тот же пользователь входит в систему). Это приложение работает нормально в течение некоторого времени. Однако Facebook только что предупредил меня, что я использую Graph API 2.3, который 10 июля устареет.

Где / как указать версию Graph API при использовании passport-facebook?

В электронном письме Facebook говорится: "Мы предполагаем, что одна конечная точка может быть затронута". Интересно, что passport-facebook использует, что сломается. Будут ли десятки тысяч людей, использующих passport-facebook также внезапно прекратить 10 июля?

1 ответ

Решение

Чтобы ответить на ваш главный вопрос, вы можете указать profileURL в настройках стратегии:

const strategy = new FacebookStrategy({
    clientID: FACEBOOK_APP_ID,
    clientSecret: FACEBOOK_APP_SECRET,
    callbackURL: CALLBACK_URL,
    profileURL: 'https://graph.facebook.com/{API_VERSION}/me'
  },
  (accessToken, refreshToken, profile, cb) => { ... }
);

Это, кажется, нигде не задокументировано; Мне пришлось искать в исходном коде, чтобы найти его. Значением по умолчанию является 'https://graph.facebook.com/v2.5/me',

Не забудьте также проверить настройки вашего приложения, так как они имеют элементы управления для определения версии API.

Просто укажите версию в graphAPIVersion свойство конструктора:

passport.use(new FacebookStrategy({
    graphAPIVersion: "v4.0",
    clientID: process.env.FACEBOOK_CLIENT_ID,
    clientSecret: process.env.FACEBOOK_CLIENT_SECRET,
    callbackURL: process.env.CALLBACK_URL
}

Из исходного кода: https://github.com/jaredhanson/passport-facebook/blob/master/lib/strategy.js

Другие вопросы по тегам