def get(self): verifier = self.request.get('oauth_verifier') logging.info('verify id = %s' % verifier) signature_method_hmac_sha1 = oauth.OAuthSignatureMethod_HMAC_SHA1() # Get token - key and secret from memcache that we set on SinaOauthPhaseOne tokenstr = memcache.get("PK_"+self.request.get('id')) memcache.delete("PK_"+self.request.get('id')) token = oauth.OAuthToken.from_string(tokenstr) consumer = oauth.OAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET) client = SimpleOAuthClient(SERVER, PORT, REQUEST_TOKEN_URL, ACCESS_TOKEN_URL, AUTHORIZATION_URL) oauth_request = oauth.OAuthRequest.from_consumer_and_token( consumer, token=token, verifier=verifier, http_url=client.access_token_url) oauth_request.sign_request(signature_method_hmac_sha1, consumer, token) # Finally get access_token after verifier is matched. access_token = client.fetch_access_token(oauth_request) logging.info('Sina Authorized access_token = %s' % access_token) # Set cookie into browser in case for further use. self.response.headers.add_header('Set-Cookie', 'oauth_key=' + access_token.key + cookie) self.response.headers.add_header('Set-Cookie', 'oauth_secret=' + access_token.secret + cookie) # Call Sina weibopy API auth.OAuthHandler() and set access_token to # fetch access_resource aka:user resource. auth_access_resource = OAuthHandler( consumer_key=CONSUMER_KEY, consumer_secret=CONSUMER_SECRET) auth_access_resource.set_access_token(access_token.key, access_token.secret) # API() inherits auth_access_resource return. api = API(auth_access_resource) # I call api.verify_credentials instead of use auth.OAuthHandler.get_username username = api.verify_credentials() if username: self.username = username.screen_name self.response.headers.add_header('Set-Cookie', 'sina_username='******'Sina username: %s' % self.username) else: logging.info('NO SINA USER') self.redirect('/')
def get(self): verifier = self.request.get('oauth_verifier') logging.info('verify id = %s' % verifier) signature_method_hmac_sha1 = oauth.OAuthSignatureMethod_HMAC_SHA1() # Get token - key and secret from memcache that we set on SinaOauthPhaseOne tokenstr = memcache.get("PK_" + self.request.get('id')) memcache.delete("PK_" + self.request.get('id')) token = oauth.OAuthToken.from_string(tokenstr) consumer = oauth.OAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET) client = SimpleOAuthClient(SERVER, PORT, REQUEST_TOKEN_URL, ACCESS_TOKEN_URL, AUTHORIZATION_URL) oauth_request = oauth.OAuthRequest.from_consumer_and_token( consumer, token=token, verifier=verifier, http_url=client.access_token_url) oauth_request.sign_request(signature_method_hmac_sha1, consumer, token) # Finally get access_token after verifier is matched. access_token = client.fetch_access_token(oauth_request) logging.info('Sina Authorized access_token = %s' % access_token) # Set cookie into browser in case for further use. self.response.headers.add_header( 'Set-Cookie', 'oauth_key=' + access_token.key + cookie) self.response.headers.add_header( 'Set-Cookie', 'oauth_secret=' + access_token.secret + cookie) # Call Sina weibopy API auth.OAuthHandler() and set access_token to # fetch access_resource aka:user resource. auth_access_resource = OAuthHandler(consumer_key=CONSUMER_KEY, consumer_secret=CONSUMER_SECRET) auth_access_resource.set_access_token(access_token.key, access_token.secret) # API() inherits auth_access_resource return. api = API(auth_access_resource) # I call api.verify_credentials instead of use auth.OAuthHandler.get_username username = api.verify_credentials() if username: self.username = username.screen_name self.response.headers.add_header( 'Set-Cookie', 'sina_username='******'Sina username: %s' % self.username) else: logging.info('NO SINA USER') self.redirect('/')
def post_to_wb(request): if request.method == 'POST': success = "" access_token = request.session['oauth_access_token'] auth = OAuthHandler(SINA_APP_KEY, SINA_APP_SECRET) auth.set_access_token(access_token.key, access_token.secret) api = API(auth) try: content = request.POST.get("content") api.update_status(content) success = "成功发布" except: raise success = "失败" return HttpResponseRedirect('/status') return HttpResponseRedirect('/status')
def test_rp(request): if request.method == 'POST': success = "" access_token = request.session['oauth_access_token'] auth = OAuthHandler(SINA_APP_KEY, SINA_APP_SECRET) auth.set_access_token(access_token.key, access_token.secret) api = API(auth) try: username = api.me().screen_name number = int(md5.md5(username.encode('utf-8')).hexdigest(), 16) rp = number % 100 rating = rp2rating(rp) api.update_status(u"%s, 你的人品是 %d, %s" %(username, rp, rating)) success = u"成功发布" except: raise success = u"失败" return HttpResponseRedirect('/status') return HttpResponseRedirect('/status')
def test_rp(request): if request.method == 'POST': success = "" access_token = request.session['oauth_access_token'] auth = OAuthHandler(SINA_APP_KEY, SINA_APP_SECRET) auth.set_access_token(access_token.key, access_token.secret) api = API(auth) try: username = api.me().screen_name number = int(md5.md5(username.encode('utf-8')).hexdigest(), 16) rp = number % 100 rating = rp2rating(rp) api.update_status(u"%s, 你的人品是 %d, %s" % (username, rp, rating)) success = u"成功发布" except: raise success = u"失败" return HttpResponseRedirect('/status') return HttpResponseRedirect('/status')
def get(self): query = db.GqlQuery("SELECT * FROM OauthUser") if query.count() > 0: for result in query: # rebuild twitter api twitter = tweepy.OAuthHandler(consumer_key,consumer_secret) twitter.set_access_token(result.twitter_access_key,result.twitter_access_secret) twitter_api = tweepy.API(twitter) timeline = twitter_api.user_timeline() last_id = result.twitter_last_id tweets_to_be_post = [] for tl in timeline: # disable jiepang if int(tl.id_str) > int(last_id): if tl.source.find(unicode('街旁(JiePang)','utf8')) == -1 and tl.source.find('Instagram') == -1: tweets_to_be_post.append({'id_str':tl.id_str,'text':tl.text}) else: break if len(tweets_to_be_post) > 0: # rebuild sina api sina = OAuthHandler(app_key,app_secret) sina.set_access_token(result.sina_access_key,result.sina_access_secret) sina_api = API(sina) for tweet_obj in reversed(tweets_to_be_post): user = OauthUser.get_by_key_name(result.sina_name) cur_id = tweet_obj['id_str'] cur_tweet = tweet_obj['text'] if cur_tweet.find('#nosina') != -1 or cur_tweet.startswith('@'): continue tweet = replace_tweet(cur_tweet) self.response.out.write(tweet) try: sina_api.update_status(tweet) user.twitter_last_id = cur_id user.put() self.response.out.write('同步成功!') except WeibopError,e: self.response.out.write(e) self.response.out.write('<br>')
def showstatus(request): logined = False if request.session.get('oauth_access_token'): logined = True access_token = request.session['oauth_access_token'] else: return render_to_response('wb/status.html', locals()) access_token = request.session['oauth_access_token'] auth = OAuthHandler(SINA_APP_KEY, SINA_APP_SECRET) auth.set_access_token(access_token.key, access_token.secret) api = API(auth) try: gender = "male" if api.me().gender == "m" else "female" id = api.me().id screen_name = api.me().screen_name description = api.me().description location = api.me().location profile_image_url = api.me().profile_image_url except : return render_to_response('wb/status.html', locals()) return render_to_response('wb/status.html', locals())
def showstatus(request): logined = False if request.session.get('oauth_access_token'): logined = True access_token = request.session['oauth_access_token'] else: return render_to_response('wb/status.html', locals()) access_token = request.session['oauth_access_token'] auth = OAuthHandler(SINA_APP_KEY, SINA_APP_SECRET) auth.set_access_token(access_token.key, access_token.secret) api = API(auth) try: gender = "male" if api.me().gender == "m" else "female" id = api.me().id screen_name = api.me().screen_name description = api.me().description location = api.me().location profile_image_url = api.me().profile_image_url except: return render_to_response('wb/status.html', locals()) return render_to_response('wb/status.html', locals())