【Python】用新浪api发微博
来源:互联网 发布:oracle查询当天数据 编辑:程序博客网 时间:2024/05/23 02:07
新浪微博开放平台现在有两种授权机制:OAuth2.0和Basic Auth(仅用于开发者调试接口)。
在这里采用了Python SDK的OAuth1.0,原因就是OAuth1.0忽略CallBack_url也能通过认证。
代码(SinaBlogDemo.py):
#!/usr/bin/env python# -*- coding: utf8 -*-# generated by wxGlade 0.6.5 on Thu Jul 05 00:17:55 2012import wx, urllib, urllib2, refrom weibo1 import APIClient, OAuthToken# begin wxGlade: extracode# end wxGlade#显示消息对话框def ShowMessageBox(msg): dlg = wx.MessageDialog(None, msg, 'Message Box', wx.OK | wx.ICON_INFORMATION ) dlg.ShowModal()#通过提供的账号和密码,返回APIClient对象实例def GetBlogClient(uname, passw): APP_KEY = u'783190658' # app key APP_SECRET = u'7f63ae9eb3c1438e9f8932748ca8a341' # app secret #实例化APIClient client = APIClient(app_key=APP_KEY, app_secret=APP_SECRET) #获取OAuth request token reqToken = client.get_request_token() #用户授权url auth_url = client.get_authorize_url(reqToken) post_data = urllib.urlencode({ "action": "submit", "forcelogin": "", "from": "", "oauth_callback" : "http://api.weibo.com/oauth2/default.html", "oauth_token" : reqToken.oauth_token, "passwd" : passw, "regCallback": "", "ssoDoor": "", "userId" : uname, "vdCheckflag" : 1, "vsnval":"" }) mat = re.search( r'&oauth_verifier=(.+)', urllib2.urlopen(urllib2.Request( "http://api.t.sina.com.cn/oauth/authorize", post_data, headers={ 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1)', 'Referer': auth_url } )).url ) if mat: client = APIClient( APP_KEY, APP_SECRET, OAuthToken( reqToken.oauth_token, reqToken.oauth_token_secret, mat.group(1) )) #返回APIClient return APIClient(APP_KEY, APP_SECRET, client.get_access_token()) else: raise Exception()class MyFrame(wx.Frame): def __init__(self, *args, **kwds): # begin wxGlade: MyFrame.__init__ kwds["style"] = wx.DEFAULT_FRAME_STYLE wx.Frame.__init__(self, *args, **kwds) self.label_1 = wx.StaticText(self, -1, u"账号:") self.text_ctrl_uname = wx.TextCtrl(self, -1, u"") self.label_2 = wx.StaticText(self, -1, u"密码:") self.text_ctrl_passw = wx.TextCtrl(self, -1, u"", style=wx.TE_PASSWORD) self.button_1 = wx.Button(self, -1, u"发送微博") self.text_ctrl_msg = wx.TextCtrl(self, -1, "", style=wx.TE_MULTILINE | wx.HSCROLL | wx.TE_RICH2) self.__set_properties() self.__do_layout() self.Bind(wx.EVT_BUTTON, self.OnSend, self.button_1) # end wxGlade def __set_properties(self): # begin wxGlade: MyFrame.__set_properties self.SetTitle("frame_1") self.text_ctrl_msg.SetMinSize((374, 168)) # end wxGlade def __do_layout(self): # begin wxGlade: MyFrame.__do_layout sizer_1 = wx.BoxSizer(wx.VERTICAL) sizer_2 = wx.BoxSizer(wx.VERTICAL) sizer_5 = wx.BoxSizer(wx.HORIZONTAL) sizer_4 = wx.BoxSizer(wx.HORIZONTAL) sizer_3 = wx.BoxSizer(wx.HORIZONTAL) sizer_3.Add(self.label_1, 0, wx.ALIGN_CENTER_VERTICAL, 0) sizer_3.Add(self.text_ctrl_uname, 0, 0, 0) sizer_5.Add(sizer_3, 0, wx.ALL | wx.EXPAND, 3) sizer_4.Add(self.label_2, 0, wx.ALIGN_CENTER_VERTICAL, 0) sizer_4.Add(self.text_ctrl_passw, 0, 0, 0) sizer_5.Add(sizer_4, 0, wx.ALL | wx.EXPAND, 3) sizer_5.Add(self.button_1, 0, 0, 0) sizer_2.Add(sizer_5, 0, wx.EXPAND, 0) sizer_2.Add(self.text_ctrl_msg, 1, wx.EXPAND, 0) sizer_1.Add(sizer_2, 1, wx.ALL | wx.EXPAND, 8) self.SetSizer(sizer_1) sizer_1.Fit(self) self.Layout() # end wxGlade def OnSend(self, event): # wxGlade: MyFrame.<event_handler> try: blog = GetBlogClient( self.text_ctrl_uname.GetValue(), self.text_ctrl_passw.GetValue() ) blog.post.statuses__update(status=self.text_ctrl_msg.GetValue()) ShowMessageBox(u'发送成功!') except Exception, e: ShowMessageBox(u'发送失败!') event.Skip()# end of class MyFrameif __name__ == "__main__": app = wx.PySimpleApp(0) wx.InitAllImageHandlers() frame_1 = MyFrame(None, -1, "") app.SetTopWindow(frame_1) frame_1.Show() app.MainLoop()
说明:
1.程序的界面部分的代码是由wxGlade图形化编辑后自动生成的。
2.程序中添加了一个函数GetBlogClient,参数分别为要登录微博的账号和密码,返回一个SDK中的APIClient实例
附:
1.新浪微博Python SDK下载地址: (点击打开链接)
2.新浪微博Python SDK使用说明文档(点击打开链接)
3.新浪微博API文档(点击打开链接)
4.新浪APPKEY集合(点击打开链接)
5.程序及源码包(点击打开链接)
- 【Python】用新浪api发微博
- python调用新浪API爬虫
- 用AFNetworking 调用新浪发微博的API
- 新浪微博python API的使用
- python调用新浪微博API
- Python:新浪微博API初试
- 新浪微博python下api的OAuth登陆
- 新浪微博python下api的OAuth登陆
- 新浪微博API使用之python接口的使用
- 如何通过python调用新浪微博的API
- 使用python调用新浪微博API的小经历
- 新浪微博API OAuth 2 Python客户端
- Python 获取新浪微博的热门话题 (API)
- 新浪微博API OAuth2 python客户端改进
- 如何通过python调用新浪微博的API
- Python如何调用新浪api接口的问题
- 使用python登录新浪API,实现自动转发功能
- python模拟登录新浪微博自动获得调用新浪api所需的code
- poj 3167
- tomcat 6.0配置
- 微软认真了!微软Surface平板强来袭击,采用IntelX86 I5 CPU 支持Windows8 Pro版本 全面兼容PC端软件
- 赏心悦目的宏代码
- 求子数组和的最大值算法
- 【Python】用新浪api发微博
- java design pattern -- facade
- python C/S模型
- java.lang.NoSuchMethodError: javax.persistence.spi.PersistenceUnitInfo.getValidationMode()Lja
- TankWar0.6 版本
- 画笔程序说明
- Mac: GroupLogic发布ExtremeZ-IP v8
- Eclipse快捷键与使用技巧总结
- Android开发---xml布局文件中的常见属性总结