def sinaWeiBo(appKey,appSecret,infoDb,user,content): access_token=infoDb.get(user,None) if not access_token: client = APIClient(app_key=appKey, app_secret=appSecret) # 用appKey创建一个client request_token = client.get_request_token() # 1.app认证,如果认证成功,有sina返回一个request_token url="http://api.t.sina.com.cn/oauth/authorize?oauth_token=%s"%(request_token.oauth_token) # 需要用户对该app进行授权,这样保证app不会获取用户的帐号和密码 webbrowser.open(url) oauth_verifier = raw_input('PIN: ').strip() # 验证用户是否对app授权 即2.授权认证 request_token = OAuthToken(request_token.oauth_token, request_token.oauth_token_secret, oauth_verifier) # 构造新一个request_token client = APIClient(app_key=appKey, app_secret=appSecret, token=request_token) access_token = client.get_access_token() # 向sina获取access_token,即3.代理访问认证 infoDb.setdefault(user,access_token) client = APIClient(app_key=appKey, app_secret=appSecret, token=access_token) client.post.statuses__update(status=content.decode('utf-8').encode('utf-8')) for object in client.get.statuses__user_timeline(): # 获取该user发布的前20条微博 print "" # id = object["id"] text = object["text"] created_at = object["created_at"] print str(created_at)+":"+ text.encode('gb18030'), if 'retweeted_status' in object: object=object['retweeted_status'] print "retweeted:",object['text'].encode('gb18030'),
def GET(self): client = APIClient(app_key=APP_KEY, app_secret=APP_SECRET, callback=CALLBACK_URL) request_token = client.get_request_token() # 保存request_token: self.save_request_token(request_token.oauth_token, request_token.oauth_token_secret) url = client.get_authorize_url(request_token.oauth_token) # redirect to url raise web.found(url)
def GetBlogClient(uname, passw): APP_KEY = u'XXXXXXXXXX' # app key APP_SECRET = u'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' # app secret #实例化APIClient client = APIClient(app_key=APP_KEY, app_secret=APP_SECRET) #获取OAuth request token reqToken = client.get_request_token() #用户授权url auth_url = client.get_authorize_url(reqToken) post_data = urllib.urlencode({ "action": "submit", "forcelogin": "", "from": "", "oauth_callback": "http://api.weibo.com/oauth2/default.html", "oauth_token": reqToken.oauth_token, "passwd": passw, "regCallback": "", "ssoDoor": "", "userId": uname, "vdCheckflag": 1, "vsnval": "" }) mat = re.search( r'&oauth_verifier=(.+)', urllib2.urlopen( urllib2.Request("http://api.t.sina.com.cn/oauth/authorize", post_data, headers={ 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1)', 'Referer': auth_url })).url) if mat: client = APIClient( APP_KEY, APP_SECRET, OAuthToken(reqToken.oauth_token, reqToken.oauth_token_secret, mat.group(1))) #返回APIClient return APIClient(APP_KEY, APP_SECRET, client.get_access_token()) else: raise Exception()
def GetBlogClient(uname, passw): client = APIClient(app_key=app_key, app_secret=app_secret) reqToken = client.get_request_token() auth_url = client.get_authorize_url(reqToken) return APIClient(app_key, app_secret, client.get_access_token())