使用python調用API的話,首先要去下壹個Python的SDK,sinaweibopy
連接地址在此: /sinaweibopy/
可以使用pip很快的導入,github連接裏的wiki也有入門的使用方法,很容易看懂。
2.理解新浪微博的授權機制
在調用API之前,首先要搞懂什麽叫OAuth 2,即新浪微博的授權機制,
連接在此: /wiki/%E6%8E%88%E6%9D%83%E6%9C%BA%E5%88%B6%E8%AF%B4%E6%98%8E
3.在新浪微博註冊應用
每個人都可以通過新浪微博開發者平臺註冊自己的應用,我註冊的是站內應用。註冊後會為每個應用分配唯壹的app key 和 app secret,這在上文提到的授權機制中需要用到,相當與每個應用的標示吧。
至此,我們可以嘗試寫代碼調用新浪微博的API啦。
4.簡單的調用API實例
參考了往上很多資料和文檔,寫了壹個簡單的調用過程。
# _*_ coding: utf-8 _*_
from weibo import APIClient
import webbrowser
APP_KEY = ”
APP_SECRET = ”
CALLBACK_URL = ”
#這個是設置回調地址,必須與那個”高級信息“裏的壹致
client = APIClient(app_key=APP_KEY, app_secret=APP_SECRET, redirect_uri=CALLBACK_URL)
url = client.get_authorize_url()
# TODO: redirect to url
#print url
webbrowser.open_new(url)
# 獲取URL參數code:
code = ‘2fc0b2f5d2985db832fa01fee6bd9316‘
client = APIClient(app_key=APP_KEY, app_secret=APP_SECRET, redirect_uri=CALLBACK_URL)
r = client.request_access_token(code)
access_token = r.access_token # 新浪返回的token,類似abc123xyz456
expires_in = r.expires_in # token過期的UNIX時間:/sayarywei?code=505e3efcdad1f421d147db7276aabdbe
看到了嗎?
問號後面有壹個code=……的壹個東西,把等號後面的字符串拷貝下來賦給code就可以了,但是每次運行程序是code不是壹成不變的,也就是說每次都
要有這麽壹個手動獲取的過程,我覺得很麻煩,以後自己再研究壹下,實現自動獲取code就好了。如果能有哪位大神告訴我,感激不盡~
好了,得到正確的code之後就可以完成授權認證,也就可以調用微博的API啦,至於如何在Python下調用,我拷貝壹下sinaweibopy上的介紹:
首先查看新浪微博API文檔,例如:
API:statuses/user_timeline
請求格式:GET
請求參數:
source:string,采用OAuth授權方式不需要此參數,其他授權方式為必填參數,數值為應用的AppKey?。
access_token:string,采用OAuth授權方式為必填參數,其他授權方式不需要此參數,OAuth授權後獲得。
uid:int64,需要查詢的用戶ID。
screen_name:string,需要查詢的用戶昵稱。
(其它可選參數略)
調用方法:將API的“/”變為“.”,根據請求格式是GET或POST,調用get ()或post()並傳入關鍵字參數,但不包括source和access_token參數:
r = client.statuses.user_timeline.get(uid=123456)
for st in r.statuses:
print st.text
若為POST調用,則示例代碼如下:
r = client.statuses.update.post(status=u'測試OAuth 2.0發微博')
若需要上傳文件,傳入file-like object參數,示例代碼如下:
f = open('/Users/michael/test.png', 'rb')
r = client.statuses.upload.post(status=u'測試OAuth 2.0帶圖片發微博', pic=f)
f.close() # APIClient不會自動關閉文件,需要手動關閉
請註意:上傳的文件必須是file-like object,不能是str,因為無法區分壹個str是文件還是字段。可以通過StringIO把壹個str包裝成file-like object。