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

che*_*ozo 4 javascript oauth tumblr google-chrome-extension

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

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

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

che*_*ozo 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()方法,将解码当前的网址并从中获取参数.

315号线有一个神奇的检查:

var keyval = param.split("=");
if (keyval.length == 2) {
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,网址结尾#_=_是奇怪的.所以首先我决定稍微改写一下这个方法来解决这个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;
};
Run Code Online (Sandbox Code Playgroud)