我正在尝试使用 reddit api 通过使用 node.js 和 request.js 的机器人登录。我设法弄清楚我需要从/api/login 请求返回的 modhash 和 session cookie。我已使用以下代码访问了两者:
request.post({
uri: 'http://www.reddit.com/api/login',
json: true,
headers: agentheader,
qs : logincreds
},function(err,response,body){
if(err){
throw err;
} else {
if(response.statusCode == 200){
mhash = body.json.data.modhash;
session_cookie = body.json.data.cookie;
console.log(body.json.data.cookie);
console.log("login OK, modhash: "+mhash);
console.log("Session cookie: "+session_cookie);
agentheader = {
'user-agent': 'base10bot made by /u/01011110',
'X-Modhash' : mhash,
'Cookie' : 'reddit_session='+session_cookie
};
...
在最后一点,我用 modhash 和 cookie 设置了自定义 header ,就像/r/redditdev 上的某人告诉我应该这样做的那样。如果没有“reddit_session =”部分, session cookie根本不起作用,但有了它,我所做的一切都会返回403禁止。
我很确定“cookie”的格式是错误的,因为当我记录它时,它显示为数字 ID、时间戳和全部以逗号分隔的哈希值。有人可以帮我找出发送此 cookie header 的正确方法吗?我在 google 上找到的所有内容要么使用 python requests,要么使用 bash。
最佳答案
我猜你没有将 body 解析为 JSON。试试这个 -
data = JSON.parse(body);
session_cookie = data.json.data.cookie;
关于node.js - Reddit api session cookie 格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21009700/