欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python django成功调用sina微博api(最新)有图

程序员文章站 2022-03-25 13:17:13
...
从下面地址去下载python的微博SDK

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,自己手工输入就行了


python django成功调用sina微博api(最新)有图

那我的那个REDIRECT_URL = 'http://127.0.0.1:8000/market/weibo'到底是执行了什么呢,请往下看

1、 其实我就写了一个View将CODE打印出来而已

python django成功调用sina微博api(最新)有图

 @staticmethod
    def WeiboTest(request):
        print request.GET
        return HttpResponse("生成成功!")

截图:

python django成功调用sina微博api(最新)有图

微博认证后回调你的页面时候,会把code带过来,这样子就可以看到了。


下一步怎么操作?

当然回到执行testweibo.py的命令行下,把这个code输入进去回车,看图:

python django成功调用sina微博api(最新)有图


这就是获取friends的结果。


对于api的调用,大家可以尝试使用工具去搭配测试:

python django成功调用sina微博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存入文件,然后再调用使用。