python使用xauth方式登录饭否网然后发消息


Posted in Python onApril 11, 2014

开发环境:python版本2.X

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# 适合python版本:2.X
import sys, urllib, re
import oauth.oauth as oauth
from urllib2 import Request, urlopen
status = 'hello world !' # send message
consumer_key = '...'     # api key
consumer_secret = '...'  # api secret
access_token_url = 'http://fanfou.com/oauth/access_token'
verify_url = 'http://api.fanfou.com/account/verify_credentials.xml'
post_url = 'http://api.fanfou.com/statuses/update.xml'
def request_to_header(request, realm=''):
     """Serialize as a header for an HTTPAuth request."""
     auth_header = 'OAuth realm="%s"' % realm
     # Add the oauth parameters.
     if request.parameters:
         for k, v in request.parameters.iteritems():
             if k.startswith('oauth_') or k.startswith('x_auth_'):
                 auth_header += ', %s="%s"' % (k, oauth.escape(str(v)))
     return {'Authorization': auth_header}
# get username and password from command line 
username = sys.argv[1]
passwd = sys.argv[2] 
consumer = oauth.OAuthConsumer(consumer_key, consumer_secret)
params = {}
params["x_auth_username"] = username
params["x_auth_password"] = passwd
params["x_auth_mode"] = 'client_auth'
request = oauth.OAuthRequest.from_consumer_and_token(consumer,
                                                     http_url=access_token_url,
                                                     parameters=params)
signature_method = oauth.OAuthSignatureMethod_HMAC_SHA1()
request.sign_request(signature_method, consumer, None)
headers=request_to_header(request)
resp = urlopen(Request(access_token_url, headers=headers))
token = resp.read()
print token # access_token got
m = re.match(r'oauth_token=(?P<key>[^&]+)&oauth_token_secret=(?P<secret>[^&]+)', token)
if m:
    oauth_token = oauth.OAuthToken(m.group('key'), m.group('secret'))
    params['status']=status
    request = oauth.OAuthRequest.from_consumer_and_token(consumer,
                                                         http_method='POST',
                                                         token=oauth_token,
                                                         http_url=post_url,
                                                         parameters=params)
    request.sign_request(signature_method, consumer, oauth_token)
    headers=request_to_header(request)
    resp = urlopen(Request(url=post_url, data=urllib.urlencode({'status':status}), headers=headers))
    print resp.read()
Python 相关文章推荐
wxPython使用系统剪切板的方法
Jun 16 Python
MySQL中表的复制以及大型数据表的备份教程
Nov 25 Python
Python判断变量是否为Json格式的字符串示例
May 03 Python
Python探索之修改Python搜索路径
Oct 25 Python
python 实现对文件夹中的图像连续重命名方法
Oct 25 Python
解决pycharm安装后代码区不能编辑的问题
Oct 28 Python
在Python中pandas.DataFrame重置索引名称的实例
Nov 06 Python
Linux上使用Python统计每天的键盘输入次数
Apr 17 Python
详解Python图像处理库Pillow常用使用方法
Sep 02 Python
基于matplotlib xticks用法详解
Apr 16 Python
基于CentOS搭建Python Django环境过程解析
Aug 24 Python
Python代码,能玩30多款童年游戏!这些有几个是你玩过的
Apr 27 Python
python判断、获取一张图片主色调的2个实例
Apr 10 #Python
Python使用新浪微博API发送微博的例子
Apr 10 #Python
一个检测OpenSSL心脏出血漏洞的Python脚本分享
Apr 10 #Python
Python删除指定目录下过期文件的2个脚本分享
Apr 10 #Python
python实现随机密码字典生成器示例
Apr 09 #Python
Python下的Mysql模块MySQLdb安装详解
Apr 09 #Python
使用python实现递归版汉诺塔示例(汉诺塔递归算法)
Apr 08 #Python
You might like
PHP如何得到当前页和上一页的地址?
2006/11/27 PHP
攻克CakePHP系列三 表单数据增删改
2008/10/22 PHP
PHP跳转页面的几种实现方法详解
2013/06/08 PHP
关于php内存不够用的快速解决方法
2013/10/26 PHP
php+ajax实现图片文件上传功能实例
2014/06/17 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
2017/11/14 PHP
PHP删除数组中指定下标的元素方法
2018/02/03 PHP
PHP实现批量修改文件名的方法示例
2019/09/18 PHP
Web版彷 Visual Studio 2003 颜色选择器
2007/01/09 Javascript
动态控制Table的js代码
2007/03/07 Javascript
封装好的省市地区联动控件附下载
2007/08/13 Javascript
数组Array进行原型prototype扩展后带来的for in遍历问题
2010/02/07 Javascript
alert中断settimeout计时功能
2013/07/26 Javascript
jQuery中ajax的使用与缓存问题的解决方法
2013/12/19 Javascript
js函数与php函数的区别实例浅析
2015/01/12 Javascript
快速学习jQuery插件 Form表单插件使用方法
2015/12/01 Javascript
jquery.qtip提示信息插件用法简单实例
2016/06/17 Javascript
Bootstrap编写一个兼容主流浏览器的受众门户式风格页面
2016/07/01 Javascript
JS实现选定指定HTML元素对象中指定文本内容功能示例
2017/02/13 Javascript
Angular4学习笔记之准备和环境搭建项目
2017/08/01 Javascript
layer.open 按钮的点击事件关闭方法
2018/08/17 Javascript
详解如何使用router-link对象方式传递参数?
2019/05/02 Javascript
Vue之beforeEach非登录不能访问的实现(代码亲测)
2019/07/18 Javascript
如何在Python中编写并发程序
2016/02/27 Python
Python基础教程之异常详解
2019/01/10 Python
树莓派采用socket方式文件传输(python)
2019/06/22 Python
关于python scrapy中添加cookie踩坑记录
2020/11/17 Python
丝芙兰法国官网:SEPHORA法国
2016/09/01 全球购物
欧舒丹美国官网:L’Occitane美国
2018/02/23 全球购物
Ellesse英国官网:意大利高级运动品牌
2019/07/23 全球购物
Aurora London官网:奢华、负担得起的皮革手袋
2020/08/01 全球购物
《菜园里》教学反思
2014/04/17 职场文书
2014年十八届四中全会思想汇报范文
2014/10/17 职场文书
运动会加油稿50字
2015/07/21 职场文书
详解Js模块化的作用原理和方案
2021/04/29 Javascript
Python基于Tkinter开发一个爬取B站直播弹幕的工具
2021/05/06 Python