
#微信登陆+设置session@Wechat.route("/session")def update_session():#1.拿codecode = request.args.get("code")if not code:return "ERR_INVALID_CODE", 400next = request.args.get("next", "/")#2.向微信服务器发送https请求,获取access_tokenurl1 = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=¥s&secret=¥s&code=¥s&grant_type=authorization_code" ¥(app_id,app_secret,code)#发送请求,只传url说明用postresponse1 = urllib.request.urlopen(url1)#获取响应数据,微信返回的json数据json_str1 = response1.read()respond_dict1 = json.loads(json_str1)#json提取access_tokenif "errcode" in respond_dict1:return "获取access_token失败"access_token = respond_dict1.get("access_token")#access_tokenopen_id = respond_dict1.get("openid")#用户所有微信开发平台编号#3.向微信服务器发送https请求,获取用户资料url2 = "https://api.weixin.qq.com/sns/userinfo?access_token=¥s&openid=¥s&lang=zh_CN"¥(access_token,open_id)response2 = urllib.request.urlopen(url2)#获取响应数据,微信返回的json数据user_json_str = response2.read()user_respond_dict = json.loads(user_json_str)#json提取access_tokenif "errcode" in user_respond_dict:return "获取用户信息失败"else:#用户数据:openid = user_respond_dict.get("openid")#用户单个微信开发平台编号unionid = user_respond_dict.get("unionid")#用户所有微信开发平台编号nickname = user_respond_dict.get("nickname")#用户名字sex = user_respond_dict.get("sex")#用户性别1男2女province = user_respond_dict.get("province")#用户省份city = user_respond_dict.get("city")#用户城市country = user_respond_dict.get("country")#用户国家headimgurl = user_respond_dict.get("headimgurl")#用户头像#设置session("unionid",unionid)session["unionid"] = unionid#设置session("openid",openid)session["openid"] = openid#设置session("nickname",nickname)session["nickname"] = nickname#设置session("headimgurl",headimgurl)session["headimgurl"] = headimgurl#从浏览器拿statestate = request.args.get("state")#设置session("state",state)session["state"] = state#开启session时间限制session.permanent = True# print(openid,unionid,nickname,sex,province,city,country,headimgurl)try:#查询数据库的Wechatdatabase表,看有没有这个id(数据表的名字=这里的unionid)wechatdata = Wechatdatabase.query.filter_by(unionid=unionid).first()#如果有就过了if wechatdata:wechatdata.nickname = nicknamewechatdata.province = provincewechatdata.city = citywechatdata.country =country# 提交操作到数据库db.session.commit()#如果没有就新增else:try:#新id进来 = 数据库名(数据库表列1名=啥名,数据库表列2名=啥东西)#new_wechat_id = Wechatdatabase(openid=openid,sex=sex,province=province,city=city,country=country,unionid=unionid,points=50)new_wechat_id = Wechatdatabase(openid=openid,nickname=nickname,sex=sex,province=province,city=city,country=country,unionid=unionid)db.session.add(new_wechat_id)db.session.commit()except Exception as e:print(e)flash("添加id失败!")db.session.rollback()except:passreturn redirect(url_for("A.index"))
最后一句return redirect(url_for(‘A.index’))
意思是返回主页的方法
A是Flask蓝图名字
index是def index():方法
¥要改回来百分号