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的源码浅要剖析Python的内存管理
Apr 16 Python
Python中的zipfile模块使用详解
Jun 25 Python
python安装与使用redis的方法
Apr 19 Python
利用python打印出菱形、三角形以及矩形的方法实例
Aug 08 Python
python2 与python3的print区别小结
Jan 16 Python
Python搭建FTP服务器的方法示例
Jan 19 Python
numpy下的flatten()函数用法详解
May 27 Python
在Django model中设置多个字段联合唯一约束的实例
Jul 17 Python
基于python实现蓝牙通信代码实例
Nov 19 Python
pytorch:model.train和model.eval用法及区别详解
Feb 20 Python
Python pip安装第三方库实现过程解析
Jul 09 Python
python基础之类方法和静态方法
Oct 24 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
一个简洁的多级别论坛
2006/10/09 PHP
php md5下16位和32位的实现代码
2008/04/09 PHP
php通过数组实现多条件查询实现方法(字符串分割)
2014/05/06 PHP
php中把美国时间转为北京时间的自定义函数分享
2014/07/28 PHP
使用php的HTTP请求的库Requests实现美女图片墙
2015/02/22 PHP
几个优化WordPress中JavaScript加载体验的插件介绍
2015/12/17 PHP
php数组分页实现方法
2016/04/30 PHP
PHP利用正则表达式将相对路径转成绝对路径的方法示例
2017/02/28 PHP
ThinkPHP实现生成和校验验证码功能
2017/04/28 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
2017/11/13 PHP
php解决crontab定时任务不能写入文件问题的方法分析
2019/09/16 PHP
自编jQuery插件实现模拟alert和confirm
2014/09/01 Javascript
javascript删除一个html元素节点的方法
2014/12/20 Javascript
小心!AngularJS结合RequireJS做文件合并压缩的那些坑
2016/01/09 Javascript
jquery根据一个值来选中select下的option实例代码
2016/08/29 Javascript
Angular中使用ui router实现系统权限控制及开发遇到问题
2016/09/23 Javascript
如何用js判断dom是否有存在某class的值
2017/02/13 Javascript
捕获未处理的Promise错误方法
2017/10/13 Javascript
vue脚手架搭建项目的兼容性配置详解
2018/07/17 Javascript
vue中通过使用$attrs实现组件之间的数据传递功能
2019/09/01 Javascript
vue3.0自定义指令(drectives)知识点总结
2020/12/27 Vue.js
Python处理字符串之isspace()方法的使用
2015/05/19 Python
浅析python中的迭代与迭代对象
2018/10/08 Python
使用Matplotlib 绘制精美的数学图形例子
2019/12/13 Python
python字符串,元组,列表,字典互转代码实例详解
2020/02/14 Python
Eclipse配置python默认头过程图解
2020/04/26 Python
解决keras加入lambda层时shape的问题
2020/06/11 Python
多重CSS背景动画实现方法示例
2014/04/04 HTML / CSS
会议活动邀请函
2014/01/27 职场文书
新闻编辑自荐书范文
2014/02/12 职场文书
大学生活自我评价
2014/04/09 职场文书
学习三严三实对照检查材料思想汇报
2014/09/22 职场文书
2014年民主评议党员个人总结
2014/09/24 职场文书
张家口市高新区党工委群众路线教育实践活动整改方案
2014/10/25 职场文书
优秀班组申报材料
2014/12/25 职场文书
工程服务质量承诺书
2015/04/29 职场文书