微信小程序,授權登錄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