Facebook Graph API 长效令牌

Facebook Graph API Long-Lived Token

我正在使用 Facebook Graph API,我已按照官方文档页面上的说明通过 运行 以下代码使用先前提取的访问令牌获取长期令牌

//Get long-lived access token
var longLiveToken = "https://graph.facebook.com/v8.0/oauth/" +
  req.authInfo + "?grant_type=fb_exchange_token&client_id=" + process.env.FACEBOOK_CLIENT_ID +
  "&client_secret=" + process.env.FACEBOOK_CLIENT_SECRET + "&fb_exchange_token=" + req.authInfo +
  "&redirect_uri=http://localhost:4000/";

https.get(longLiveToken, (res) => {
  console.log('statusCode:', res.statusCode);
  console.log('headers:', res.headers);

  res.on('data', (d) => {
    console.log(d);
  });

}).on('error', (e) => {
  console.error(e);
});

但是我收到以下错误消息

'www-authenticate': 'OAuth "Facebook Platform" "invalid_request" "client_secret should not be passed to /oauth

我的查询符合官方文档,不知道为什么会收到此错误消息或如何解决它

您不应提供 client_secret 值。尽量不要提供 client 参数。也许您提供了错误的 uri,或者没有传递必需的参数。如果您再看一看,它会起作用。

我发现代码有什么问题,我传递了错误的参数。以下是正确的查询

var longLiveToken = "https://graph.facebook.com/v8.0/oauth/" +
  "access_token" + "?grant_type=fb_exchange_token&client_id=" + process.env.FACEBOOK_CLIENT_ID +
  "&client_secret=" + process.env.FACEBOOK_CLIENT_SECRET + "&fb_exchange_token=" + req.authInfo;