def GET(sefl): ins=web.input() oauth_verifier=ins.get('oauth_verifier',None) request_token=session.get('request_token',None) auth=OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET) auth.request_token=request_token access_token=auth.get_access_token(oauth_verifier) session.access_token=access_token web.seeother("/")
def GET(self): try: ins = web.input() oauth_verifier = ins.get('oauth_verifier', None) request_token = session.get('request_token', None) auth = OAuthHandler(key.CONSUME_KEY, key.CONSUME_SECRET) auth.request_token = request_token access_token = auth.get_access_token(oauth_verifier) session.access_token = access_token web.seeother("/index") except Exception: info = "亲,系统繁忙,请稍后再试......,系统在3秒后自动返回..." return render_template('error.html', info=info.decode('utf-8'))
def GET(self): try: ins=web.input() oauth_verifier=ins.get('oauth_verifier',None) request_token=session.get('request_token',None) auth=OAuthHandler(key.CONSUME_KEY, key.CONSUME_SECRET) auth.request_token=request_token #通过oauth_verifier来获取access_token access_token=auth.get_access_token(oauth_verifier) session.access_token=access_token web.seeother("/") except Exception: web.header("Content-Type", "text/html;charset=utf-8") return ':-( 出错了'
def oauth_callback(request): oauth_verifier = request.REQUEST.get('oauth_verifier', None) request_token = request.session.get('oauth_sina_request_token', None) auth = OAuthHandler(settings.SINA_CONSUMER_KEY, settings.SINA_CONSUMER_SECRET) auth.request_token = request_token access_token = auth.get_access_token(oauth_verifier) logger.debug("authorized") request.session['oauth_sina'] = auth api = API(auth) data = api.verify_credentials() from django.contrib.auth import authenticate, login as django_login user = authenticate(sinaweiboid=data.id) if user is None: # query = SinaWeibo.objects.filter(weiboid = data.id) # if (len(query) == 0): user = User() user.username = "******" + data.name user.backend = 'sinaweibo' user.save() sina_weibo = SinaWeibo() sina_weibo.weiboid = data.id sina_weibo.name = data.name sina_weibo.access_token = auth.access_token.key sina_weibo.access_secret = auth.access_token.secret sina_weibo.user = user sina_weibo.save() user = authenticate(sinaweiboid=data.id) assert user != None # else: # sina_weibo = query[0] # user = sina_weibo.user # user.backend = 'sinaweibo' django_login(request, user) return HttpResponseRedirect("/")
def get(self): self.response.headers['Content-Type'] = 'text/plain' #-- Get access token from in coming url --# oauth_verifier=cgi.escape(self.request.get('oauth_verifier')) logging.debug("oauth_verifier is "+oauth_verifier) request_token=cgi.escape(self.request.get('oauth_token')) logging.debug("request_token is "+request_token) dbkey = cgi.escape(self.request.get('UID')) logging.debug("UID is "+ dbkey) #-- Find if token is defined in DB? --# #TODO: handle exception if search db failed Target = db.get(db.Key(dbkey)) Target.verifier = oauth_verifier if Target.service == "sina": auth1 = OAuthHandler(CONSUMER_KEY_SINA, CONSUMER_SECRET_SINA,self.call_back_url) auth1.request_token = Target.toOauthToken() auth1.get_access_token(Target.verifier.strip()) auth1.api = API(auth1) #status = auth1.api.update_status("Hello weibo! from myapp".encode("utf-8")) access_token_user_name = auth1.get_username() #-- Write to DB --# Target.fromOauthToken(auth1.access_token) Target.states = "accessTokenOK" Target.put() #-- Show info to user --# self.response.out.write('Hello '+access_token_user_name+"\nYou are verified!!") if Target.service == "twitter": auth1 = OAuthHandler(CONSUMER_KEY_TWITTER, CONSUMER_SECRET_TWITTER,self.call_back_url+"?UID="+dbkey,True) auth1.OAUTH_HOST = 'api.twitter.com' auth1.OAUTH_ROOT = '/oauth/' auth1.request_token = Target.toOauthToken() try: auth1.get_access_token(Target.verifier.strip()) # status = auth1.api.update_status("Hello weibo! from myapp".encode("utf-8")) except Exception,error_message: logging.error("Get access token failed!! ") logging.debug("Service Provider " + Target.service) logging.debug("oauth_token:" + request_token) logging.debug("oauth_verifier:" + oauth_verifier) logging.debug( error_message ) self.response.out.write( error_message ) auth1.api = API(auth1,host='api.twitter.com',search_host='api.twitter.com') user = auth1.api.verify_credentials() if user: auth1.username = user.screen_name self.response.out.write('Hello '+auth1.username+"\nYou are verified!!") else: logging.error("Cannot Get user Name!") #-- Write to DB --# Target.fromOauthToken(auth1.access_token) Target.states = "accessTokenOK" Target.put()