Пример #1
0
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)
Пример #2
0
        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