Tumblr OAuth授权“oauth_verifier缺失或无效”。 chrome扩展的消息解决方案

时间:2013-05-24 21:40:59

标签: javascript oauth google-chrome-extension tumblr

所以我从http://www.tumblr.com/oauth/authorize?oauth_token=xxx获得400这个问题。 我使用this Google Chrome OAuth tutorial页面,只是从那里复制文件。

这一切都有效,直到有一天我不得不重新授权我的扩展程序。 它失败了。

当我进行控制时,我得到了400个http结果代码和一条消息Missing or invalid oauth_verifier.

1 个答案:

答案 0 :(得分:9)

1)首先解决:oauth_verifier

在哪里

我查看了授权应用程序时tumblr提出的请求。 有一个http://www.tumblr.com/oauth/authorize?oauth_token=xxx

它被重定向到chrome-extension://jlaojpiafmimgibgdfbmphfkejnlifdn/chrome_ex_oauth.html?chromeexoauthcallback=true&oauth_token=XXX&oauth_verifier=dmbcbNDGj7QatrFznXG587RIM7wI1LG3bnKwYGy5tc2icmUVvE#_=_

核查员到位了,为什么我们不明白呢? 在chrome_ex_oauth.js我们有ChromeExOAuth.formDecode()方法,它将解码当前网址并从中获取参数。

那里有一个魔术检查line 315

var keyval = param.split("=");
if (keyval.length == 2) {

正如您所看到的,网址以#_=_结尾,这很奇怪。 所以首先我决定稍微重写一下这个方法,以便从中获取oauth_verifier

2)它不能与oauth_verifier=dmbcbNDGj7QatrFznXG587RIM7wI1LG3bnKwYGy5tc2icmUVvE#_=_一起使用,所以我决定完全删除这个标签并获得:oauth_verifier=dmbcbNDGj7QatrFznXG587RIM7wI1LG3bnKwYGy5tc2icmUVvE开始工作。

对我而言,这仍然是一个问题:Tumblr希望我遵循的重定向网址末尾的这个标签是什么?


我稍微改变的方法如下:

ChromeExOAuth.formDecode = function(encoded) {
  // Cut hash at the end of the url.
  var hash_index = encoded.indexOf('#');
  if ( hash_index > -1 ) {
    encoded = encoded.substring(0, hash_index);
  }

  var params = encoded.split("&");
  var decoded = {};
  for (var i = 0, param; param = params[i]; i++) {
    var keyval = param.split("=");
    if (keyval.length == 2) {
      var key = ChromeExOAuth.fromRfc3986(keyval[0]);
      var val = ChromeExOAuth.fromRfc3986(keyval[1]);
      decoded[key] = val;
    }
  }
  return decoded;
};