上一節中已經安裝了Python SDK,可以在程式中引入weibo模組編寫微博程式了。下面的程式的功能就是利用該模組發一條新微博,先開具體的代碼:
#! /usr/bin/python"""引入Python SDK的包"""import weibo"""授權需要的三個資訊,APP_KEY、APP_SECRET為建立應用時分配的,CALL_BACK在應用的設定網頁中設定的。【注意】這裡授權時使用的CALL_BACK地址與應用中設定的CALL_BACK必須一致,否則會出現redirect_uri_mismatch的錯誤。"""APP_KEY = '2024......'APP_SECRET = '91a57c......'CALL_BACK = 'http://bingbingrobot.sinaapp.com/'def run(): #weibo模組的APIClient是進行授權、API操作的類,先定義一個該類對象,傳入參數為APP_KEY, APP_SECRET, CALL_BACKclient = weibo.APIClient(APP_KEY, APP_SECRET, CALL_BACK) #擷取該應用(APP_KEY是唯一的)提供給使用者進行授權的urlauth_url = client.get_authorize_url()#列印出使用者進行授權的url,將該url拷貝到瀏覽器中,伺服器將會返回一個url,該url中包含一個code欄位(1所示)print "auth_url : " + auth_url#輸入該code值(2所示)code = raw_input("input the retured code : ")#通過該code擷取access_token,r是返回的授權結果,具體參數參考官方文檔:# http://open.weibo.com/wiki/Oauth2/access_tokenr = client.request_access_token(code) #將access_token和expire_in設定到client對象client.set_access_token(r.access_token, r.expires_in)#以上步驟就是授權的過程,現在的client就可以隨意調用介面進行微博操作了,下面的代碼就是用使用者輸入的內容發一條新微博while True:print "Ready! Do you want to send a new weibo?(y/n)"choice = raw_input()if choice == 'y' or choice == 'Y':content = raw_input('input the your new weibo content : ')if content: #調用介面發一條新微薄,status參數就是微博內容client.statuses.update.post(status=content)print "Send succesfully!"break;else:print "Error! Empty content!"if choice == 'n' or choice == 'N':breakif __name__ == "__main__":run()
圖1
圖2
程式執行成功後,在微博中就可以看到剛才發的新微博了,3所示。
圖3
關於授權介面和API介面的調用
由於該SDK提供的類和函數沒有詳細的說明,授權過程很簡單而且是固定的,可以查看模組的原始碼檔案weibo.py,找到系統中Python模組安裝目錄,就可以找到該檔案,我的系統(Ubuntu)中weibo.py位於:/usr/local/lib/python2.7/dist-packages/。
關於微博操作的API,雖然沒有介面的說明,但是有一定的規律。現在新浪微博開放平台的API文檔(http://open.weibo.com/wiki/%E5%BE%AE%E5%8D%9AAPI)中找到需要調用的API,例如上面需要發一條微博,找到該功能的API文檔(http://open.weibo.com/wiki/2/statuses/update),內容圖4所示。
圖4
看到該API訪問的url,將url中的“/”替換成client對象的“.”,然後看到該API的HTTP請求方式,如果post則調用post介面,如果是get則調用get介面,如果該API的調用方式就是:client.statuses.update.post(status=content),參數以key=value的形式給出,具體的參數在API文檔中有非常詳細的說明。因此,可以看出,API的調用是非常方便的。
關於是否需要重複授權類似的用SDK發微博的程式在網上有很多,而且大多類似,步驟都是進行授權,然後調用API,而且授權的過程是將url拷貝到瀏覽器中,然後將得到的code輸入擷取access_token。那這裡有一個疑問(也是網上不少朋友問到的問題):難道每次發一條微博運行該程式時,都要進行一次授權嗎?那不是很麻煩嗎?而且官方文檔中也說明了,授權一次是可以持續一段時間的(測試層級的是1天),這裡卻每次運行程式都要重新授權,是不是沒必要呢?答案是:沒必要每次運行程式都進行授權,上一次成功的授權只要沒有超過有效期間是繼續有效。具體怎麼操作呢?下一節繼續。
By: