python django成功调用sina微博api(最新)有图
http://michaelliao.github.com/sinaweibopy/
下载安装文件,自己通过python setup.py install 去安装。
# -*- coding: utf-8 -*-
import sys
import weibo
import webbrowser
APP_KEY = '2XXXX1' # app key
APP_SECRET = 'cb597a8XXXXXXXXXX71c3' # app secret
MY_APP_SECRET = APP_SECRET
REDIRECT_URL = 'http://127.0.0.1:8000/market/weibo'#A:这一点很重要
api = weibo.APIClient(APP_KEY, MY_APP_SECRET)
authorize_url = api.get_authorize_url(REDIRECT_URL)
print(authorize_url)
webbrowser.open_new(authorize_url)
code = raw_input()#B:这一点很重要
request = api.request_access_token(code, REDIRECT_URL)
access_token = request.access_token
expires_in = request.expires_in
api.set_access_token(access_token, expires_in)
#print(api.statuses__public_timeline())
print 'user_timeline'
r = api.statuses.user_timeline.get(uid=1800946163)
for st in r.statuses:
print st.text
print 'friendships_friends'
friends= api.friendships.friends.get(uid=1800946163,count=200)
print friends
然后把上述代码保存到testweibo.py,这里主要讲几点:
1、APP_KEY 和APP_SECRET 需要你去http://open.weibo.com自己申请的网站或者APP去找
2、A:我看文档上写的CALLBACK_URL,这个你可以写成本地地址,毕竟自己机器上跑django,需要获取一个认证code;这里特别注意,你要在下图中配置授权回调页(callbackurl),否则你即使在代码里写了一个真实的callbackurl,也会报错,这个跟你的APP是否是通过审核还是未通过审核没有关系,我看很多人都卡在这一步上。
3、B:就是等webbrowser,open_new认证页面后,会得到一个认证code,自己手工输入就行了
那我的那个REDIRECT_URL = 'http://127.0.0.1:8000/market/weibo'到底是执行了什么呢,请往下看
1、 其实我就写了一个View将CODE打印出来而已
@staticmethod
def WeiboTest(request):
print request.GET
return HttpResponse("生成成功!")
截图:
微博认证后回调你的页面时候,会把code带过来,这样子就可以看到了。
下一步怎么操作?
当然回到执行testweibo.py的命令行下,把这个code输入进去回车,看图:
这就是获取friends的结果。
对于api的调用,大家可以尝试使用工具去搭配测试:
你自然会想到API调用的命名规则是什么,呵呵,如下:
URL:https://api.weibo.com/2/statuses/public_timeline.json
其次,对api名做一个变换:【将反斜线/替换为双下划线__】
这里得到:statuses__public_timeline
那么,statuses__public_timeline(),就是APIClient的成员函数名了。
扩展思考:
对于django上的项目,获取code的方式可以先存入session里,然后再调动使用,否则每次都去开个认证窗口复制黏贴岂不是很累。
对于python上的项目,可以采用文件共享方式,将code存入文件,然后再调用使用。
上一篇: 时间复杂度分析
下一篇: 微信红包封面开放平台使用指南