我想在我的node.js應用程序中設置Facebook登錄流,但出於某種原因,我不能從Facebook API返回訪問令牌我使用節點的https.get()。當我使用curl時,我可以獲取訪問令牌,所以我不確定哪個節點的做法不同。相關代碼:Node.js https.get()不返回Facebook訪問令牌
var express = require("express");
var https = require("https");
var app = express();
app.route("/")
.all(function(req, res, next)
{
res.sendfile("index.html");
});
app.route("/login")
.get(function(req, res, next)
{
res.redirect("https://www.facebook.com/dialog/oauth?" +
"client_id={my_client_id}&" +
"redirect_uri=http://localhost:3000/auth");
});
app.route("/auth")
.get(function(req, res, next)
{
var code = req.query.code;
https.get("https://graph.facebook.com/oauth/access_token?" +
"client_id={my_client_id}" +
"&redirect_uri=http://localhost:3000/auth" +
"&client_secret={my_client_secret}" +
"&code=" + code,
function(token_response)
{
// token_response doesn't contain token...
res.sendfile("logged_in.html");
}
).on("error", function(e) {
console.log("error: " + e.message);
});
});
var server = app.listen("3000", function()
{
console.log("listening on port %d...", server.address().port);
});
token_response
結束是一個巨大的物體,似乎有什麼相關的訪問令牌。 Facebook開發者文檔說我應該回來:access_token={access-token}&expires={seconds-til-expiration}
這正是我使用curl時得到的,但不是節點。
因此,公司確實在'token_response'對象包含什麼? – Tobi
@Tobi它看起來好像有很多關於請求的數據似乎一遍又一遍地重複。我試着創建一個循環遍歷所有屬性的函數,找到一個名爲「access_token」的屬性,但它找不到一個 – MattL922