2012-02-23 27 views
0

我想通過以下網址無法驗證的OAuth簽名和令牌 - JavaScript的

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簽名和令牌」。這個網址有什麼問題?

回答

3

您的系統時間是否正確配置???????

+0

尼斯抓user1228283 :) – 2012-02-24 12:12:59

0

我們出現此錯誤的原因之一「無法驗證OAuth簽名和令牌」是系統時間錯誤的原因。由於OAuth請求攜帶系統時間戳參數,因此當設備時間不在Twitter服務器時間的5分鐘內時,我們會收到「無法驗證OAuth簽名和令牌」。

如果是這樣的原因,並希望它做的工作,如果系統時間是錯的也,則有兩種方式,使其工作:

  1. 發出HTTP HEAD請求到端點上api.twitter.com - 您會在響應中獲得一個Date HTTP標頭,表明Twitter可以理解當前時間。然後,您可以將其轉換爲紀元時間並將其調整爲確定的偏移量。

  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; 
    } 
    

就是這樣......快樂編碼:)

+0

請不要使用代碼爲_anything_塊,但是,你知道,_code_。特別是不要開始[建議這樣的編輯](http://stackoverflow.com/review/suggested-edits/2869632)。見例如[這裏](http://meta.gaming.stackexchange.com/q/7437/88)爲什麼,順便說一句 – 2013-09-06 06:45:26

相關問題