新浪微博API开发简介之Python篇

标签:Python

本文很久未更新,仅供参考。

今天注册了下新浪微博,无聊之余便想写个应用玩玩。之前也曾写过Twitter的应用,因此这次自然是得心应手,不到半小时就写完了一个应用…

与Twitter相比,新浪微博做得更好的地方是直接提供了SDK(Twitter貌似只有第三方的SDK)。而我自然是用Python SDK,一个只有几十k的玩意。
接着进入exanples文件夹(新浪这英文水平,不提了…),打开oauthSetTokenUpdate.py文件就是一个很标准的例子了。
于是照着写了一个:
# -*- coding: utf-8 -*-

from weibopy.auth import OAuthHandler
from weibopy.api import API


consumer_key= '应用的key'
consumer_secret ='应用的App Secret'

auth = OAuthHandler(consumer_key, consumer_secret)
auth_url = auth.get_authorization_url()
print 'Please authorize: ' + auth_url
verifier = raw_input('PIN: ').strip()
auth.get_access_token(verifier)
api = API(auth)

status = api.update_status(status='hello world', lat='12.3', long='45.6') # 注意status必须是UTF-8编码的字符串,经纬度是可以不写的
print status.id
print status.text
注意consumer_key和consumer_secret需要创建一个应用才能拿到。

运行这个程序,你会发现它可耻地失败了,报出一条语法错误:
  File 'C:\Documents and Settings\Administrator\Desktop\sinatpy\weibopy\api.py',
 line 197
    )(self, *args, post_data=post_data, headers=headers)
                           ^
SyntaxError: invalid syntax
于是打开weibopy\api.py这个文件,把197行改成:
)(self, post_data=post_data, headers=headers, *args)

再运行这个程序就会提示一个URL链接,在浏览器里打开这个链接,并且给予访问权限,就会拿到一串PIN码。把这个PIN码输上去,就会发送一条推了,并且还会显示用户的Access token key和Access token secret。
可以看到整个过程是很简单的:
  1. 用你的consumer_key和consumer_secret创建一个OAuthHandler对象auth。
  2. 告诉用户访问auth.get_authorization_url(),并让用户授权这个应用。
  3. 拿到用户的PIN码,用auth.get_access_token()拿到用户的Access token key和Access token secret。
  4. 用auth创建一个API对象api。
  5. 调用api的方法,例如update_status()就是发推。详细说明可以看API文档

当然,每次都要求用户输入PIN码也太傻了,所以在用auth.get_access_token()拿到Access token key和Access token secret之后,就可以直接用它们来创建API对象了:
# -*- coding: utf-8 -*-

from weibopy.auth import OAuthHandler
from weibopy.api import API


consumer_key= '应用的key'
consumer_secret ='应用的App Secret'
token = '用户的Access token key'
tokenSecret = '用户的Access token secret'

auth = OAuthHandler(consumer_key, consumer_secret)
auth.setToken(token, tokenSecret)
api = API(auth)

status = api.update_status(status='搞定收工~')

最后想说的是新浪微博的应用审核真麻烦,没通过审核的想show下自己个性化的应用名都不行。罢了,反正我也只是玩玩而已~

22条评论 你不来一发么↓ 顺序排列 倒序排列

    向下滚动可载入更多评论,或者点这里禁止自动加载

    想说点什么呢?