def get_weibo_user(): auth = OAuthHandler(consumer_key, consumer_secret) # Get currrent user access token from session access_token = session['oauth_access_token'] auth.setToken(access_token.key, access_token.secret) api = API(auth) # Get info from weibo return api.me()
def get_api(): import sys, os.path sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) from weibopy import OAuthHandler, API, WeibopError c = get_conf() try: o = OAuthHandler(c['consumer_key'], c['consumer_secret']) o.setToken(c['access_token_key'], c['access_token_secret']) except KeyError, e: sys.stderr.write("you should run get_oauthed.py first.\n")
def login(): session['login_ok_url'] = get_referer() callback = 'http://appstack.sinaapp.com/login_callback' auth = OAuthHandler(consumer_key, consumer_secret, callback) # Get request token and login url from the provider url = auth.get_authorization_url() session['oauth_request_token'] = auth.request_token # Redirect user to login return redirect(url)
def login_callback(): # This is called by the provider when user has granted permission to your app verifier = request.args.get('oauth_verifier', None) auth = OAuthHandler(consumer_key, consumer_secret) request_token = session['oauth_request_token'] del session['oauth_request_token'] # Show the provider it's us really auth.set_request_token(request_token.key, request_token.secret) # Ask for a temporary access token session['oauth_access_token'] = auth.get_access_token(verifier) return redirect(session.get('login_ok_url', '/'))
def login_with_sinaid(request): callback = request.build_absolute_uri('/check_user_login_sina') auth = OAuthHandler(consumer_key=consumer_key, consumer_secret=consumer_secret, callback=callback) try: authorization_url = auth.get_authorization_url() except WeibopError: request.session['errormessage'] = ugettext( 'Connect sina twitter fail, please retry') return login(request) request_token = auth.request_token request.session['oauth_request_token'] = request_token return HttpResponseRedirect(authorization_url)
def check_user_login_sina(request): try: oauth_verifier = request.GET.get('oauth_verifier', None) request_token = request.session.get('oauth_request_token', None) request.session['oauth_request_token'] = None auth = OAuthHandler(consumer_key, consumer_secret) auth.request_token = request_token access_token = auth.get_access_token(oauth_verifier) request.session['oauth_access_token'] = access_token api = API(auth) sina_user = api.me() user_in_session = request.session.get('user', None) isnewuser = False if user_in_session == None: user, isnewuser = UserService().getorCreateCoolUserBySinaUser( sina_user) user = UserService().getUser(user) else: errormessage = UserService().updateSinaID(user_in_session, sina_user) if errormessage: request.session['errormessage'] = errormessage user = UserService().getUser(user_in_session) request.session['user'] = user newmessagecount = UserService().getMessageCount({'isread': False}, user) user.newmessagecount = newmessagecount UserService().updateCoolUser(user) if isnewuser: back_to_url = '/setting' else: back_to_url = request.session.get('login_back_to_url', '/') return HttpResponseRedirect(back_to_url) except WeibopError: errormessage = ugettext( 'Auth sina twitter account failed, please retry.') request.session['errormessage'] = errormessage return login(request)
def main(): c = get_conf() o = OAuthHandler(c['consumer_key'], c['consumer_secret']) c['authorization_url'] = o.get_authorization_url() c['request_token'] = o.request_token print c['authorization_url'] verifier = raw_input('click the url above, then input the verifier: ') verifier = verifier.strip() c['verifier'] = verifier try: access_token = o.get_access_token(verifier) c['access_token_key'] = access_token.key c['access_token_secret'] = access_token.secret c['access_token'] = access_token.to_string() set_conf(c) print 'oauth succeeded' except: print 'oauth failed'
def __init__(self, *argc, **argkw): super(BaseHandler, self).__init__(*argc, **argkw) self.path = '' self.session = session.TornadoSession(self.application.session_manager, self) if self.session.get('platform') == 'weibo': self.sina_access_token = self.session.get('oauth_access_token') auth = OAuthHandler(options.SINA_APP_KEY, options.SINA_APP_SECRET) auth.set_access_token(self.sina_access_token.key, self.sina_access_token.secret) self.sina_api = API(auth) elif self.session.get('platform') == 'renren': self._userid = int(self.get_user_id()) print "renren ok" elif self.session.get('platform') == 'douban': self._userid = int(self.get_user_id()) print "douban ok"