日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

腾讯微博Android客户端开发 - OAuth1.0认证介绍

發布時間:2024/1/8 Android 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 腾讯微博Android客户端开发 - OAuth1.0认证介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

http://wiki.open.t.qq.com/index.php/OAuth%E6%8E%88%E6%9D%83%E8%AF%B4%E6%98%8E


目錄

  • 1 騰訊微博 API OAuth認證介紹
  • 2 OAuth是什么?
  • 3 OAuth的原理認證流程及訪問資源流程
    • 3.1 請求簽名說明
    • 3.2 獲取未授權的Request Token
      • 3.2.1 請求參數
      • 3.2.2 返回參數
        • 3.2.2.1 示例:
      • 3.2.3 返回結果
    • 3.3 請求用戶授權Request Token
    • 3.4 使用授權后的Request Token換取Access Token
    • 3.5 使用包含Access Token的OAuth標準參數訪問騰訊微博
    • 3.6 示例

騰訊微博 API OAuth認證介紹

騰訊微博開放平臺,是基于騰訊微博系統,為廣大開發者和用戶提供的開放數據分享與傳播平臺。

廣大開發者和用戶登錄平臺后,就可以使用平臺提供的開放API接口,創建應用從微博系統獲取信息,或將新的信息傳播到整個微博系統中,豐富多樣的API接口和應用,加上您的智慧,將創造出無窮的應用和樂趣。

騰訊微博API采用OAuth協議為第三方提供接入服務,遵循[RFC-5849]規范。有關OAuth認證的詳細說明,請閱讀官方OAuth規范。各種語言的OAuth 客戶端可以在Google-OAuth項目里找到。

騰訊微博API使用OAuth 1.0a版本。

OAuth官網地址:http://www.oauth.net/

OAuth是什么?

OAuth協議為用戶資源的授權提供了一個安全的、開放而又簡易的標準。同時,任何第三方都可以使用OAuth認證服務,任何服務提供商都可以實現 自身的OAuth認證服務,因而OAuth是開放的。業界提供了OAuth的多種實現如PHP,JavaScript,Java,Ruby等各種語言開發 包,大大節約了程序員的時間,因而OAuth是簡易的。目前互聯網很多服務如Open API,很多大頭公司如Google,Yahoo,Microsoft等都提供了OAuth認證服務,這些都足以說明OAuth標準逐漸成為開放資源授權 的標準。

在官方網站的首頁,可以看到下面這段簡介:

An open protocol to allow secure API authorization in a simple and standard method from desktop and web applications.

大概意思是說OAuth是一種開放的協議,為桌面程序或者基于BS的web應用提供了一種簡單的,標準的方式去訪問需要用戶授權的API服務。OAuth類似于Flickr Auth、Google's AuthSub[1]、Yahoo's BBAuth、 Facebook Auth等。

OAuth認證授權具有以下特點:

  • 簡單:不管是OAuth服務提供者還是應用開發者,都很容易于理解與使用;
  • 安全:沒有涉及到用戶密鑰等信息,更安全更靈活;
  • 開放:任何服務提供商都可以實現OAuth,任何軟件開發商都可以使用OAuth; 
  • OAuth的原理認證流程及訪問資源流程

    騰訊微博API通過以下四個步驟來完成認證授權并訪問或修改受限資源的流程

  • 獲取未授權的Request Token(temporary credentials)
  • 請求用戶授權Request Token
  • 使用授權后的Request Token換取Access Token(token credentials)
  • 使用 Access Token 訪問或修改受保護資源
  • 其中1~3步使用https或http方式, 第4步使用http方式。

    用戶修改密碼或進行非法行為會導致授權失效,此時需要重新進行授權

    請求簽名說明

    所有TOKEN請求和受保護的資源請求必須被簽名,微博開放平臺會根據簽名來判斷請求的合法性。簽名算法使用Signature Base String和密鑰(Secret)生成簽名,參數oauth_signature用于指定簽名。

    說明:

    Signature Base String由以下三部分組成,各項之間使用&符號分隔。

    1、Http Method
    請求方法,GET/POST

    2、URL Encode之后的請求URL(URL要小寫)
    例如:
    請求URL:

    https://open.t.qq.com/cgi-bin/request_token

    經URL Encode之后的請求URL為:

    https%3A%2F%2Fopen.t.qq.com%2Fcgi-bin%2Frequest_token

    3、URL Encode并排序之后的請求參數

    例如: URL請求參數為:

    oauth_callback=www.qq.com&oauth_consumer_key=49b0bes7352943a1a5609f9e30346201&oauth_nonce=90523669&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1298513816&oauth_version=1.0

    經URL Encode并排序之后的請求參數格式如下(參數間使用%26(即&符號)分隔):

    oauth_callback%3Dwww.qq.com%26oauth_consumer_key%5D49b0bes7352943a1a5609f9e30346201%26oauth_nonce%3D90523669%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1298513816%26oauth_version%3D1.0

    算法偽碼:

    httpMethod + "&" +url_encode( base_uri ) + "&" +sorted_query_params.each { | k, v |url_encode ( k ) + "%3D" +url_encode ( v )}.join("%26")

    密鑰由App Secret和Token Secret組成(中間使用&符號分隔)
    簽名算法目前只支持HMAC-SHA1。

    獲取未授權的Request Token

    通過訪問以下 URL 獲取未授權的 Request Token

    http://open.t.qq.com/cgi-bin/request_token

    請求參數

    參數 意義
    oauth_consumer_key App Key(應用信息中的App Key值)
    oauth_signature_method 簽名方法,暫只支持HMAC-SHA1
    oauth_signature 簽名值,密鑰為:App Secret。計算說明。
    oauth_timestamp 時間戳, 其值是距1970 00:00:00 GMT的秒數,必須是大于0的整數
    oauth_nonce 單次值,隨機生成的32位字符串,防止重放攻擊(每次請求必須不同)
    oauth_callback 認證成功后瀏覽器會被重定向到這個url中
    oauth_version 版本號,1.0

    返回參數

    參數 意義
    oauth_token 未授權的Request Token
    oauth_token_secret 對應的Request Token Secret
    oauth_callback_confirmed 對oauth_callback的確認信號

    說明:

  • 用戶授權后web應用將會重定向到oauth_callback。當應用為pc客戶端或手機客戶端應用時,沒有回調url(oauth_callback)的概念,此時設置為字符串null即可。字符串“null”必須是小寫。
  • 時間戳與標準時間偏差不得大于8分鐘。
  • 示例:

    request_token

    http://open.t.qq.com/cgi-bin/request_token?oauth_callback=null&oauth_consumer_key=aca77d2eb96f46e1b3353bc6743e8bfc&oauth_nonce=yQDMuXvdcEfQs2Mzf3XcT1r36WTULJls&oauth_signature=exxzU/tTbpdicmYHcyYh5kqgYgo=&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1299569145&oauth_version=1.0 參數名 參數值
    oauth_consumer_key aca77d2eb96f46e1b3353bc6743e8bfc
    oauth_signature_method HMAC-SHA1
    oauth_signature exxzU/tTbpdicmYHcyYh5kqgYgo=
    oauth_timestamp 1299569145
    oauth_nonce yQDMuXvdcEfQs2Mzf3XcT1r36WTULJls
    oauth_callback null
    oauth_version 1.0

    返回結果

    oauth_token=hdk48Djdsa&oauth_token_secret=xyz4992k83j47x0b&oauth_callback_confirmed=true 參數名 參數值
    oauth_token hdk48Djdsa
    oauth_token_secret xyz4992k83j47x0b
    oauth_callback_confirmed true

    請求用戶授權Request Token

    此步驟的目的是請求用戶授權Request Token,請求URL:

    http://open.t.qq.com/cgi-bin/authorize

    請求參數:

    參數 意義
    oauth_token 上一步中獲得的未授權的Request Token
    wap
    (可選參數)
    主要用于指定手機授權頁的版本
    wap=1時,跳轉到wap1.0的授權頁
    wap=2時,跳轉到wap2.0的授權頁
    不帶本參數時,手機訪問默認跳到wap2.0的授權頁

    返回參數:

    參數 意義
    oauth_token 用戶授權之后的Token值,與未授權Token值相同。
    oauth_verifier 驗證碼
    openid 可以唯一標識一個用戶(wap=1或wap=2時不返回該參數)
    openkey 與openid對應的用戶key,是驗證openid身份的驗證密鑰(wap=1或wap=2時不返回該參數)

    說明:

  • 此頁面中會要求用戶登陸,然后選擇同意或者拒絕對應用授權。
  • 授權成功后:
  • # web應用會重定向到oauth_callback所指定的URL(含返回參數)。 # 客戶端應用(oauth_callback=null)會在網頁中給出授權碼,用戶需要手工將驗證碼輸入到應用中才能完成授權流程。

    示例:

    參數 意義
    oauth_token hdk48Djdsa
    oauth_verifier 473f82d3
    openid 2D4263AB08EE337C3F3F26106BF881DA
    openkey 543403C5AA99BDCB6F87DFBB14240E04
    oauth_token=hdk48Djdsa&oauth_verifier=473f82d3

    使用授權后的Request Token換取Access Token

    用戶完成授權后,第三方應用可以通過訪問如下url,將已授權的Request Token換取Access Token。Access Token將被用于訪問或修改受限資源。

    http://open.t.qq.com/cgi-bin/access_token

    請求參數:

    參數 意義
    oauth_consumer_key AppKey
    oauth_token 第一步中獲得的Request Token
    oauth_signature_method 簽名方法,暫只支持HMAC-SHA1
    oauth_signature 簽名值,密鑰為:App Secret&Request Token Secret。計算說明。
    oauth_timestamp 時間戳, 其值是距1970 00:00:00 GMT的秒數,必須是大于0的整數
    oauth_nonce 單次值,隨機生成的32位字符串,防止重放攻擊(每次請求必須不同)
    oauth_verifier 上一步請求授權request token時返回的驗證碼
    oauth_version 1.0

    返回參數:

    參數 意義
    oauth_token Access Token
    oauth_token_secrete Access Token Secret

    說明:

  • 本步驟用于簽名的密鑰為App Secret和Request Token Secret(中間使用&分隔)
  • 獲得返回值后就可以使用Access Token來訪問資源了。
  • Access Token和Access Token Secret永遠不會過期,直到用戶撤銷應用授權或騰訊回收您的app訪問權限才會失效。
  • 用于簽名的Signature Base String格式如下:

    示例:access_token:

    http://open.t.qq.com/cgi-bin/access_token?oauth_consumer_key=aca77d2eb96f46e1b3353bc6743e8bfc&oauth_nonce=y2FrX7Muouma5vxWTKngEb7uHkRu4P5u&oauth_signature=209vcEaHkmb/QwHqsRU3HRPvlqw=&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1299569210&oauth_token=6b99583b7bc8446bb57e86128158994f&oauth_verifier=877973&oauth_version=1.0 參數 意義
    oauth_consumer_key aca77d2eb96f46e1b3353bc6743e8bfc
    oauth_token 6b99583b7bc8446bb57e86128158994f
    oauth_signature_method HMAC-SHA1
    oauth_signature 209vcEaHkmb/QwHqsRU3HRPvlqw=
    oauth_timestamp 1299569210
    oauth_nonce y2FrX7Muouma5vxWTKngEb7uHkRu4P5u
    oauth_verifier 877973
    oauth_version 1.0

    返回結果:

    oauth_token=nnch734d00ls2jdk&oauth_token_secreate=pdkkdhi9sl3r4s00 參數 意義
    oauth_token nnch734d00ls2jdk
    oauth_token_secrete
    pdkkdhi9sl3r4s00

    至此,您的應用就取得了用戶的授權,請妥善保管獲得的Access Token和Access Token Secret。

    此后,您的應用就可以使用該Access Token訪問騰訊微博了。

    使用包含Access Token的OAuth標準參數訪問騰訊微博

    獲得Access Token之后,您的應用就可以使用該Access Token訪問騰訊微博。

    在每次調用接口API時,請求都必須包含如下所示OAuth標準參數:

    參數 意義
    oauth_consumer_key AppKey
    oauth_token Access?Token
    oauth_signature_method 簽名方法,暫只支持HMAC-SHA1
    oauth_signature 簽名值,密鑰為:App Secret&Access Token Secret。
    oauth_timestamp 時間戳
    oauth_nonce 單次值

    示例

    調用API:

    http://open.t.qq.com/api/t/add 發布一條微博

    參數包括:

  • 接口參數:content和format;
  • OAuth協議參數
  • 參數 參數值
    content helloworld
    format json
    oauth_consumer_key aca77d2eb96f46e1b3353bc6743e8bfc
    oauth_nonce Tld5QvrtTlRJvaSWPlCC7DIXxnTBeumD
    oauth_signature JuPSe7ibf0uPECp4HcX4Fu9y3l0=
    oauth_signature_method HMAC-SHA1
    oauth_timestamp 1299569293
    oauth_token b8c8f1a888ea4f2887eac88787b6e895
    oauth_version 1.0

    post:

    http://open.t.qq.com/api/t/add?content=helloworld&clientip=121.14.96.121&longitude=113.421234&latitude=22.354231&syncflag=0&format=xml&oauth_token=d8b0965f24a14575a84863a5e19a8705&oauth_nonce=709da91378181caec8e709085a757764&oauth_consumer_key=801058005&oauth_signature_method=HMAC-SHA1&oauth_version=1.0&oauth_timestamp=1350653166&oauth_signature=unC%2FaR5N6hoXUsrabBgKHYjKcdg%3D

    轉載于:https://my.oschina.net/zhongwenhao/blog/142899

    總結

    以上是生活随笔為你收集整理的腾讯微博Android客户端开发 - OAuth1.0认证介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。