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 相关文章推荐
python之模拟鼠标键盘动作具体实现
Dec 30 Python
Python的for和break循环结构中使用else语句的技巧
May 24 Python
Pycharm学习教程(7)虚拟机VM的配置教程
May 04 Python
python利用pandas将excel文件转换为txt文件的方法
Oct 23 Python
pycharm 在windows上编辑代码用linux执行配置的方法
Oct 27 Python
BP神经网络原理及Python实现代码
Dec 18 Python
Python操作Mongodb数据库的方法小结
Sep 10 Python
django框架ModelForm组件用法详解
Dec 11 Python
关于pytorch处理类别不平衡的问题
Dec 31 Python
Python离线安装各种库及pip的方法
Nov 28 Python
详解Python 3.10 中的新功能和变化
Apr 28 Python
Python实现单例模式的5种方法
Jun 15 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框架的性能
2008/01/10 PHP
PHP SQLite类
2009/05/07 PHP
使用php计算排列组合的方法
2013/11/13 PHP
跟我学Laravel之路由
2014/10/15 PHP
PHP实现多图上传(结合uploadify插件)思路分析
2016/11/30 PHP
PHP实现的DES加密解密类定义与用法示例
2020/11/02 PHP
Ctrl+Enter提交内容信息
2006/06/26 Javascript
js Flash插入函数免激活代码
2009/03/31 Javascript
JSQL 基于客户端的成绩统计实现方法
2010/05/05 Javascript
利用jquery的获取JS文件中的字符串内容
2012/02/14 Javascript
jQuery根据纬度经度查看地图处理程序
2013/05/08 Javascript
页面加载完成后再执行JS的jquery写法以及区别说明
2014/02/22 Javascript
ExpressJS入门实例
2015/01/14 Javascript
深入学习JavaScript对象
2015/10/13 Javascript
在JavaScript中call()与apply()区别
2016/01/22 Javascript
jQuery实现根据生日计算年龄 星座 生肖
2016/11/23 Javascript
JS 组件系列之Bootstrap Table 冻结列功能IE浏览器兼容性问题解决方案
2017/06/30 Javascript
jQuery实现上下滚动公告栏详细代码
2018/11/21 jQuery
6行代码实现微信小程序页面返回顶部效果
2018/12/28 Javascript
微信小程序之 catalog 切换实现解析
2019/09/12 Javascript
Nuxt的动态路由和参数校验操作
2020/11/09 Javascript
[03:49]显微镜下的DOTA2第十五期—VG登基之路完美团
2014/06/24 DOTA
使用Python编写提取日志中的中文的脚本的方法
2015/04/30 Python
Python正则表达式经典入门教程
2017/05/22 Python
Python操作MongoDB数据库的方法示例
2018/01/04 Python
Python登录注册验证功能实现
2018/06/18 Python
Python利用字典破解WIFI密码的方法
2019/02/27 Python
tensorflow如何继续训练之前保存的模型实例
2020/01/21 Python
python开发实例之Python的Twisted框架中Deferred对象的详细用法与实例
2020/03/19 Python
使用python修改文件并立即写回到原始位置操作(inplace读写)
2020/06/28 Python
css3教程之倾斜页面
2014/01/27 HTML / CSS
鞋子女王塔玛拉·梅隆同名奢侈品牌:Tamara Mellon
2017/11/22 全球购物
应聘自荐信
2013/12/14 职场文书
2015年学校教育教学工作总结
2015/04/22 职场文书
停车场管理制度范本
2015/08/05 职场文书
Nest.js参数校验和自定义返回数据格式详解
2021/03/29 Javascript