微信小程序,授权登录api部分


首先要完成这个模块要先创建两张表

 

表创建好了之后我们想办法拿到用户的数据,需要拿到用户的数据就要去看一下微信开放的接口

 

发现想要拿到用户的数据就要用这个接口来获取

同样发现登录接口需要用到login获取的code来获取用户的唯一标识符openid

 

 

 我们首先去前台渲染的页面去加上一个接口

 

设置好接口我们就可以写js来获取数据

 

 

 

现在该开始写后台了

 

 

 

 现在我们要设置另一个接口就是用户已存在数据库中时返回另一个页面

 

 

 

 

 

 返回状态之后在后台进行设置

 

 

 

 1 #后台代码
 2 @route_api.route("/api/member/login",methods = ["GET","POST"])
 3 def login():
 4     resp = {'code':200,'msg':'操作成功','data':{}}
 5     #获取用户数据
 6     req = json.loads(request.values['rawData'])
 7     #获取code
 8     code = request.form.get("code","")
 9     # 判断是否有code
10     if not code or len(code)<1:
11         resp['code'] = -1
12         resp['msg'] = '需要code'
13         return jsonify(resp)
14     #获取openid
15     openid = MemberService.getWeChatOpenId(code)
16     if openid is None:
17         resp['code'] = -1
18         resp['msg'] = '调用微信出错'
19         return jsonify(resp)
20     # req = json.loads(request.values['rawData'])
21     #获取用户名称
22     nickname = req['nickName'] if 'nickName' in req else ''
23     #获取性别
24     sex = req['gender'] if 'gender' in req else 0
25     #获取头像
26     avatar = req['avatarUrl'] if 'avatarUrl' in req else ''
27     """
28         判断是否已经测试过,注册了直接返回
29     """
30     #查看用户是否已存在
31     bind_info = OauthMemberBind.query.filter_by(openid = openid,type = 1).first()
32     if not bind_info:
33         #创建数据
34         model_member = Member()
35         model_member.nickname = nickname
36         model_member.sex = sex
37         model_member.avatar = avatar
38         model_member.salt = MemberService.geneSalt()
39         model_member.updated_time = model_member.created_time = getCurrentDate()
40         db.session.add(model_member)
41         db.session.commit()
42 
43         #创建数据
44         model_bind = OauthMemberBind()
45         model_bind.member_id = model_member.id
46         model_bind.type = 1
47         model_bind.openid = openid
48         model_bind.extra = ''
49         model_bind.updated_time = model_bind.created_time = getCurrentDate()
50         db.session.add(model_bind)
51         db.session.commit()
52         bind_info = model_bind
53 
54 
55     member_info = Member.query.filter_by(id=bind_info.member_id).first()
56     token = "%s#%s" % (MemberService.geneAuthCode(member_info), member_info.id)
57     resp['data'] = {'token': token}
58     return jsonify(resp)
59 
60 
61 @route_api.route("/api/member/check-reg",methods = ["GET","POST"])
62 def checkReg():
63     resp = {'code': 200, 'msg': '操作成功', 'data': {}}
64     # 获取用户数据
65     # req = json.loads(request.values['rawData'])
66     # print(req)
67     # 获取code
68     code = request.form.get("code", "")
69     # 判断是否有code
70     if not code or len(code) < 1:
71         resp['code'] = -1
72         resp['msg'] = '需要code'
73         return jsonify(resp)
74         # 获取openid
75     openid = MemberService.getWeChatOpenId(code)
76     if openid is None:
77         resp['code'] = -1
78         resp['msg'] = '调用微信出错'
79         return jsonify(resp)
80 
81     bind_info = OauthMemberBind.query.filter_by(openid=openid, type=1).first()
82     if not bind_info:
83         resp['code'] = -1
84         resp['msg'] = '未绑定'
85         return jsonify(resp)
86     member_info = Member.query.filter_by(id=bind_info.member_id).first()
87     if not member_info:
88         resp['code'] = -1
89         resp['msg'] = '未查询到相关信息'
90         return jsonify(resp)
91 
92     token = "%s#%s"%(MemberService.geneAuthCode(member_info),member_info.id)
93     resp['data'] = {'token':token}
94     return jsonify(resp)
#js代码
  checkLogin:function () {
      var that = this;
      wx.login({
          success:function(res){
              if (!res.code){
                  app.alert('登录失败')
              }
              wx.request({
                  url: 'http://127.0.0.1:9090/api/member/check-reg',
                  header:{ "Content-Type": "application/x-www-form-urlencoded"},
                  method: 'POST',
                  data: {code:res.code},
                  success: function (res) {
                      if (res.data.code != 200){
                          that.setData({
                              reFlag:false
                          });
                          return
                      }
                      if (res.data.code == 200){
                          that.setData({
                              reFlag:true
                          });
                          that.goToIndex();
                      }

                  }
              });
          }
      });
  },
  getUserProfile: function () {
      var that = this;
      wx.getUserProfile({
          desc: '用于完善会员资料',
          success: function (res) {
              var data=res;
              wx.login({
                  success:function(res){
                      if (!res.code){
                          app.alert('登录失败')
                      }
                      data["code"]=res.code;
                      wx.request({
                          url: app.buildUrl('/member/login'),
                          header: {
                              "Content-Type": "application/x-www-form-urlencoded"
                          },
                          method: 'POST',
                          data: data,
                          success: function (res) {
                              if (res.data.code != 200){
                                  app.alert({'content':res.data.msg});
                                  return
                              }
                              that.goToIndex();
                          }
                      });
                  }
              });
          },
          fail:function (err) {
              console.log('获取失败')
          }
      });
  }
});

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM