【问题标题】:Failed to validate oauth signature and token - Issue javascript无法验证 oauth 签名和令牌 - 发出 javascript
【发布时间】:2013-09-05 01:25:11
【问题描述】:

我正在尝试通过以下网址获取访问令牌

https://api.twitter.com/oauth/request_token?
oauth_consumer_key=vRtqh0KONqxr1C2knqv2A&
oauth_nonce=0afa694efd3feee68ebc180f3858a9a3&
oauth_signature=QgHBQ8OLBrjgwivzIfe4p9eBtaQ%3D&
oauth_signature_method=HMAC-SHA1&
oauth_timestamp=1328989636&
oauth_version=1.0

但错误是“无法验证 oauth 签名和令牌”。这个网址有什么问题??

【问题讨论】:

    标签: oauth twitter twitter-oauth


    【解决方案1】:

    你的系统时间配置正确吗??????

    【讨论】:

      【解决方案2】:

      我们收到此错误“无法验证 OAuth 签名和令牌”的原因之一是系统时间错误。由于 OAuth 请求带有系统时间戳参数,当设备时间不在 Twitter 服务器时间的 5 分钟内时,我们会得到“Failed to validate OAuth signature and token”。

      如果是这个原因,而且你想让它在系统时间错误的情况下也能正常工作,那么有两种方法可以让它工作:

      1. 向 api.twitter.com 上的端点发出 HTTP HEAD 请求——您将在响应中获得一个 Date HTTP 标头,指示 Twitter 理解的当前时间。然后,您可以将其转换为纪元时间,并通过确定的偏移量调整您的 oauth_timestamp 值。

      2. 有一个小的 iOS 库 ios-ntp。使用它来获取准确的当前时间。

        然后在下面的方法中设置OAuth对象的时间戳

        - (GTMOAuthAuthentication *)authForTwitter {
        
            GTMOAuthAuthentication *auth = [[GTMOAuthAuthentication alloc] initWithSignatureMethod:kGTMOAuthSignatureMethodHMAC_SHA1
                        consumerKey:TWITTER_CONSUMER_KEY
                        privateKey:TWITTER_CONSUMER_SECRET];
            [auth setServiceProvider:@"Twitter"];     
            NSDate * currentdate = //GET ACCURATE DATE HERE ;            
            [auth setTimestamp:[NSString stringWithFormat:@"%f",[currentdate timeIntervalSince1970]]];
            return auth;
        }
        

      就是这样......快乐的编码:)

      【讨论】:

      • 请不要对任何东西使用代码块,但是,你知道,code。尤其是不要开始suggesting such edits。参见例如here 为什么,顺便说一句
      猜你喜欢
      • 1970-01-01
      • 2011-04-08
      • 2015-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多