【问题标题】:Tumblr OAuth authorization "Missing or invalid oauth_verifier." message solution for chrome extensionTumblr OAuth 授权“缺少或无效的 oauth_verifier。” chrome扩展消息解决方案
【发布时间】:2013-05-20 14:07:59
【问题描述】:

所以我遇到了从http://www.tumblr.com/oauth/authorize?oauth_token=xxx 获取 400 的问题。 我使用this Google Chrome OAuth tutorial 页面并从那里复制文件。

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

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

【问题讨论】:

    标签: javascript oauth google-chrome-extension tumblr


    【解决方案1】:

    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() 方法,它将解码当前的url 并从中获取参数。

    那里有一个魔术检查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;
    };
    

    【讨论】:

    • 非常感谢!我在我的 iOS 应用程序中遇到了这个确切的问题。在我看来,Tumblr API 很奇怪,它应该遵循 OAuth 1.0a 规范,但在我看来,它做的事情与其他基于 OAuth 1.0a 的 API(即 Twitter)有很多不同。
    • @Supertecnoboff 哇,令人印象深刻的是,这个错误在 4 年后仍然存在! :)
    • 更令人印象深刻的是他们还没有升级到 OAuth 2.0 哈哈。
    猜你喜欢
    • 1970-01-01
    • 2012-12-16
    • 2015-08-15
    • 2011-04-27
    • 2017-05-09
    • 1970-01-01
    • 2015-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多