XAuth——Android用戶端授權認證

來源:互聯網
上載者:User

          xAuth認證實際上是OAuth認證的簡化版。目前xAuth只對案頭用戶端和移動用戶端開放申請。Web應用請使用OAuth。xAuth旨在增強用戶端的使用者體驗,減少頁面跳轉次數。採用xAuth認證的案頭應用和行動裝置 App可以跳過oauth/request_token(擷取Request
Token)以及oauth/authorize(授權Request Token)兩步,只要提供了username和password以後,即可直接通過oauth/access_token介面得到Access Token。然後通過這個Access Token擷取資料。

        xAuth的缺點是將使用者名稱和密碼暴露給了第三方應用,所以xAuth協議只適用於開放平台特殊授權的應用,也就是說,只有當開放平台完全信任這個應用的時候才會給用戶端xAuth驗證的許可權。

      
1.構造BaseString

    * x_auth_username:           使用者名稱(即使用者在新浪通行證中使用的郵箱。)

    * x_auth_password:            密碼  

    * x_auth_mode:                  識別欄位,這裡必須是"client_auth"。

    * oauth_consumer_key:        建立應用時產生的APP KEY。

    * oauth_signature_method:  簽名方法,建議使用“HMAC-SHA1”。

    * oauth_timestamp:              時間戳記。產生Base String時的時間戳記。

    * oauth_nonce:                     單次值,一個隨機字串,防止重複攻擊。

    * oauth_version :                  OAuth協議版本。填寫“1.0”。

產生BaseString 如下所示:

POST&http%3A%2F%2Fapi.t.sina.com.cn%2Foauth%2Faccess_token&oauth_consumer_key%3D1852823608%26oauth_nonce%3D-794036333%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1291944694%26oauth_version%3D1.0%26source%3D1852823608%26x_auth_mode%3Dclient_auth%26x_auth_password%3D------%26x_auth_username%3D---------%2540sina.cn

                   其中 :%2540sina.cn =@sina.com

   2.用剛剛產生的BaseString,經過HMAC-SHA1演算法產生oauth_signature,樣本如下:
       iviIHhwXWmFLliZbeDoSyQ+XC1o=

    
3.將以下參數封裝成HTTP要求標頭,並向oauth/access_token介面提交POST請求:

     x_auth_username:            使用者名稱(即使用者在新浪通行證中使用的郵箱。)

     x_auth_password:             密碼

     x_auth_mode:                   識別欄位,這裡必須是"client_auth"。

     oauth_consumer_key:        建立應用時產生的APP KEY。

     oauth_signature_method: 簽名方法,建議使用“HMAC-SHA1”。

     oauth_timestamp:             時間戳記。產生Base String時的時間戳記。

     oauth_nonce:                    單次值,一個隨機字串,防止重複攻擊。該參數只支援ASCII碼的字串.

     oauth_version :                OAuth協議版本。填寫“1.0”。

     oauth_signature:           簽名值,是由根據上面的幾個參數產生的 Base String經HMAC-SHA1演算法計算得出。

    

    OAuth

    oauth_consumer_key="1852823608",

    oauth_signature_method="HMAC-SHA1",

    oauth_timestamp="1291944694",

    oauth_nonce="-794036333",

    oauth_version="1.0",

    oauth_signature="iviIHhwXWmFLliZbeDoSyQ%2BXC1o%3D",

    source="1852823608",

    x_auth_mode="client_auth",

    x_auth_password="------",

    x_auth_username=---------@sina.cn

   
4.得到的返回結果樣本如下:

oauth_token=160e537d530fd105669fd79a4f1dc286&oauth_token_secret=a9c46c081842bd08f55e8f0265d8fea3&user_id=160984721

     將返回結果按"&"拆開,oauth_token的值即為access_token。

    至此,以後每次用Access Token 去請求資料~

    此文根據新浪開放平台XAuth的內容進行整理~

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.