我正在尝试与Tumblr API进行交互以提取关注者列表。我是整个OAuth的新东西,所以我试图在https://adodson.com/hello.js/demos/tumblr.html的演示中模拟我的电话。不幸的是,他们提供的示例只需要API密钥进行标识(https://www.tumblr.com/docs/en/api/v2#posts),因为获取关注者需要签名的OAuth请求(https://www.tumblr.com/docs/en/api/v2#followers)。
我正在使用的电话是:
function getFollowers(blog){
hello('tumblr').api('blog/'+blog+'/followers/').then(function(r){
console.log("r", r);
//Bellow here not really relevant
var a = r.data.map(function(item){
return "<h2>"+item.title+"</h2>"+item.body_abstract;
});
document.getElementById('blogs').innerHTML = a.join('');
});
}
这会从代理生成请求网址:
https://auth-server.herokuapp.com/proxy?path=https%3A%2F%2Fapi.tumblr.com%2Fv2%2Fblog%2Fnmlapp.tumblr.com%2Ffollowers%2F%3Fapi_key%3DREDACTED08u%26callback%3D_hellojs_9kvqxi31&access_token=&then=redirect&method=get&suppress_response_codes=truee
和Tumblr的API返回
_hellojs_9kvqxi31({"meta":{"status":401,"msg":"Not Authorized"},"response":[]});
我可以看到登录调用在查询字符串参数字段中包含所有OAuth信息,而我正在尝试制作的那个没有,但是我不确定通过helloJS包含它的正确方法是什么是。
答案 0 :(得分:0)
知道了,该函数必须包含在login方法中。这在另一个例子中显示,但它从api对象调用参数的方式让我感到困惑。
function doTheThing(network){
hello( network ).login({force:false}).then( function(r){
hello('tumblr').api('followers').then(function(r){
console.log("r", r);
var a = r.data.map(function(item){
return "<h2>"+item.title+"</h2>"+item.body_abstract;
});
document.getElementById('blogs').innerHTML = a.join('');
});
});
}
//...
tumblr:{
get: {
//...
//This next part needs to be generated dynamically, but you get the idea
'followers': 'blog/BLOGNAME.tumblr.com/followers',
}
callback(p.path);
}
},
post: {
//...
'followers': function(p, callback) {
p.path = 'followers';
query(p, callback);
}
},