开发环境: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
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()