【发布时间】: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