def callback(): '''用户成功登录授权后,会回调此方法,获取access_token,完成授权''' verifier = request.args.get('oauth_verifier', None) # 设置之前保存在session的request_token if 'oauth_request_token' in session: request_token = session['oauth_request_token'] del session['oauth_request_token'] else: return render_template('index.html') auth_client.set_request_token(request_token.key, request_token.secret) access_token = auth_client.get_access_token(verifier) at_key = access_token.key at_secret = access_token.secret #设定用户令牌密钥 auth_client.setToken(at_key, at_secret) #绑定用户验证信息. api = API(auth_client) #获取微博信息 weibo = api.verify_credentials() if weibo is False or weibo is None: flash(u'杯具啊,你木有开通微博吧(⊙﹏⊙)a', 'error') return render_template('index.html') #记录用户登录信息,更新用户微博资料 User.login(weibo=weibo) Weibo.set(weibo=weibo, at_key=at_key, at_secret=at_secret) #设置session session['id'] = weibo.id session.permanent = True # 跳转回最初登录前的页面 back_to_url = session.get('login_back_to_url', '/') return redirect(back_to_url)
def callback(): '''用户成功登录授权后,会回调此方法,获取access_token,完成授权''' verifier = request.args.get('oauth_verifier', None) # 设置之前保存在session的request_token if 'oauth_request_token' in session: request_token = session['oauth_request_token'] del session['oauth_request_token'] else: return render_template('index.html') auth_client.set_request_token(request_token.key, request_token.secret) access_token = auth_client.get_access_token(verifier) at_key = access_token.key at_secret = access_token.secret #设定用户令牌密钥 auth_client.setToken( at_key, at_secret ) #绑定用户验证信息. api = API(auth_client) #获取微博信息 weibo = api.verify_credentials() if weibo is False or weibo is None: flash(u'杯具啊,你木有开通微博吧(⊙﹏⊙)a', 'error') return render_template('index.html') #记录用户登录信息,更新用户微博资料 User.login(weibo=weibo) Weibo.set(weibo=weibo, at_key=at_key, at_secret=at_secret) #设置session session['id'] = weibo.id session.permanent = True # 跳转回最初登录前的页面 back_to_url = session.get('login_back_to_url', '/') return redirect(back_to_url)
def api_verify(*args, **kwargs): if g.api: return func(*args, **kwargs) else: if g.weibo: if g.weibo.at_key and g.weibo.at_secret: auth_client.setToken(g.weibo.at_key, g.weibo.at_secret) api = API(auth_client) weibo = api.verify_credentials() if weibo: g.api = api return func(*args, **kwargs) if 'id' in session: del session['id'] session.permanent = False g.user = None g.weibo = None return render_template('errors/need_api.html')