无法使用HelloJS向Tumblr API发出OAuth 1.0a签名请求

时间:2015-11-13 22:08:17

标签: api oauth tumblr hello.js

我正在尝试与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包含它的正确方法是什么是。

1 个答案:

答案 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);
    }
  },