2012-08-27 44 views
0

實現OAUTH時,存在以下問題。在創建簽名庫時,是否應對編碼後的參數重新進行編碼,或者在對參數進行規範化時,是否應將編碼參數排除在編碼之外?OAUTH參數編碼

+0

是的我的意思是網址編碼。 – TheGuest

回答

0

看來你需要申請雙編碼,當我閱讀文檔:

例如,HTTP請求:

POST /request?b5=%3D%253D&a3=a&c%40=&a2=r%20b HTTP/1.1 
    Host: example.com 
    Content-Type: application/x-www-form-urlencoded 
    Authorization: OAuth realm="Example", 
        oauth_consumer_key="9djdj82h48djs9d2", 
        oauth_token="kkk9d7dh3k39sjv7", 
        oauth_signature_method="HMAC-SHA1", 
        oauth_timestamp="137131201", 
        oauth_nonce="7d8f3e4a", 
        oauth_signature="djosJKDKJSD8743243%2Fjdk33klY%3D" 

    c2&a3=2+q 

包含在 簽名底座採用以下(全解碼)參數刺痛:

  +------------------------+------------------+ 
      |   Name   |  Value  | 
      +------------------------+------------------+ 
      |   b5   |  =%3D  | 
      |   a3   |   a  | 
      |   [email protected]   |     | 
      |   a2   |  r b  | 
      | oauth_consumer_key | 9djdj82h48djs9d2 | 
      |  oauth_token  | kkk9d7dh3k39sjv7 | 
      | oauth_signature_method |  HMAC-SHA1 | 
      |  oauth_timestamp |  137131201 | 
      |  oauth_nonce  |  7d8f3e4a  | 
      |   c2   |     | 
      |   a3   |  2 q  | 
      +------------------------+------------------+ 

注意, 「B5」 的值爲 「=%3D」,而不是 「==」。「c @」和 「c2」都具有空值。雖然爲構造簽名庫 字符串而在此 規範中指定的編碼規則排除使用「+」字符(ASCII碼43)至 表示編碼空格字符(ASCII碼32),但此練習 爲廣泛用於「應用程序/ x-www-form-urlencoded」編碼值, 和務必正確解碼,如參數實例之一所示(在此 請求中使用了兩次「a3」參數) 。