def wechat_login_fun(code): data = json.loads(WeixinHelper.getAccessTokenByCode(code)) access_token, openid, refresh_token = data.get("access_token"), data.get("openid"), data.get("refresh_token") userinfo = json.loads(WeixinHelper.getSnsapiUserInfo(access_token, openid)) print "user_info,", userinfo # print openid if not g.user: # 检查用户是否存在 user = User.query.filter(User.profile.any(Profile.openid == openid)).first() if user is not None: signin_user(user) session['openid'] = openid session['access_token'] = openid print u'与微信用户关联的user(%s) 已开始登陆网站...' % user.name else: add_wechat_user_to_db(openid)
def inner(*args, **kwargs): openid = session.get("openid") userinfo = None if not openid: code = request.args.get("code") if not code: return redirect(WeixinHelper.oauth3(request.url)) else: data = json.loads(WeixinHelper.getAccessTokenByCode(code)) access_token, openid, refresh_token = data["access_token"], data["openid"], data["refresh_token"] # WeixinHelper.refreshAccessToken(refresh_token) userinfo = json.loads(WeixinHelper.getSnsapiUserInfo(access_token, openid)) print userinfo print openid # else: # if session.get('openid') != openid: # return redirect("/") session['openid'] = openid if callable(callback): g.user = User.query.filter(User.profile.any(Profile.openid == openid)).first() response = func() return response