使用python呼叫api的話,首先要去下一個python的sdk,sinaweibopy
可以使用pip很快的匯入,github連線裡的wiki也有入門的使用方法,很容易看懂。
在呼叫api之前,首先要搞懂什麼叫oauth 2
連線在此:
4.簡單的呼叫api例項
參考了往上很多資料和文件,寫了一個簡單的呼叫過程。
#_*_ coding: utf-8 _*_
from weibo import
apiclient
import
webbrowser
callback_url = ''
#這個是設定**地址,必須與那個”高階資訊“裡的一致
url =client.get_authorize_url()
#todo: redirect to url
#print url
webbrowser.open_new(url)
#獲取url引數code:
code = '
2fc0b2f5d2985db832fa01fee6bd9316
'r =client.request_access_token(code)
access_token = r.access_token #
expires_in = r.expires_in #
#todo: 在此可儲存access token
client.set_access_token(access_token, expires_in)
print client.friendships.friends.bilateral.ids.get(uid = 12345678)
通過以上的**,我實現了呼叫相互關注api的呼叫,即查詢與某個id的使用者相互關注的人的列表。
比較噁心的是code的獲取,我一開始看sinaweibopy的文件的時候也沒弄懂是什麼意思,如上面的**所示,url得到的是一個授權的**,我們通過
webbrowser.open_new(url)
看到了嗎? 問號後面有一個code=……的一個東西,把等號後面的字串拷貝下來賦給code就可以了,但是每次執行程式是code不是一成不變的,也就是說每次都要有這麼一個手動獲取的過程,我覺得很麻煩,以後自己再研究一下,實現自動獲取code就好了。如果能有哪位大神告訴我,感激不盡~
好了,得到正確的code之後就可以完成授權認證,也就可以呼叫微博的api啦,至於如何在python下呼叫,我拷貝一下sinaweibopy上的介紹:
api:statuses/user_timeline
請求格式:get
請求引數:
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。