python使用xauth方式登录饭否网然后发消息
admin
2023-07-31 02:07:33
0

开发环境: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[^&]+)&oauth_token_secret=(?P[^&]+)\’, 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()

相关内容

热门资讯

500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
python绘图库Matplo... 本文简单介绍了Python绘图库Matplotlib的安装,简介如下: matplotlib是pyt...
Prometheus+Graf... 一,Prometheus概述 1,什么是Prometheus?Prometheus是最初在Sound...