【问题标题】:Facebook manual authentication flow with Nodejs使用 Nodejs 的 Facebook 手动身份验证流程
【发布时间】:2018-06-21 00:50:27
【问题描述】:

我正在尝试通过 FB oauth 手动实现身份验证流程。 这里我称之为授权对话框:

<a href="https://www.facebook.com/dialog/oauth?
response_type=code
&scope=user_about_me
&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Flogin%2Fcallback
&client_id=XXXXXXXXXXXXXXXX"
>Login FB</a>

然后它重定向回我的应用服务器:

http://localhost:3000/login/callback?code=XXXXXXXXXXXXXXXXX

调用 FB API graph 以交换访问令牌的代码

function exchangeCodeForAccessToken(code) {
    const options = {
      hostname: 'graph.facebook.com',
      path: 'v2.11/oauth/access_token?client_id=XXXXXXXXXXXXXXXXX&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Flogin%2Fcallback&client_secret=YYYYYYYYYYYYYYYYYYYY&code=' + code,
      method: 'GET'
    };
    const req = https.request(options, (res2) => {
      console.log(`STATUS: ${res2.statusCode}`);
      res2.on('data', (d) => {
        console.log(d);
      });
    });
    req.end();
  }

但在这里我总是得到一个 400 没有其他指示。不管我改变什么。有什么建议吗?

谢谢

编辑。正如 CBroe 所建议的,我尝试在节点请求之后立即从浏览器执行相同的请求(相同的 url,相同的查询字符串,相同的代码): 节点 -> 400 浏览器 -> 200 + AccessToken

【问题讨论】:

  • 对于初学者,您可以尝试直接在浏览器中调用相同的 URL 时的结果...

标签: javascript node.js facebook facebook-graph-api oauth


【解决方案1】:

我找到了解决方案。只需将协议“https”放在host 属性中即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-20
    • 2016-01-19
    • 2014-02-19
    • 1970-01-01
    • 2011-08-29
    • 1970-01-01
    • 2018-01-24
    相关资源
    最近更新 更多