使用Nodejs进行Facebook手动身份验证流程

时间:2018-01-11 16:07:19

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

我试图通过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>

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

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,相同的查询字符串,相同的代码): 节点 - &gt; 400 浏览器 - &gt; 200 + AccessToken

1 个答案:

答案 0 :(得分:0)

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