真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么實(shí)現(xiàn)小程序的登錄與授權(quán)-創(chuàng)新互聯(lián)

這篇文章主要介紹怎么實(shí)現(xiàn)小程序的登錄與授權(quán),文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

創(chuàng)新互聯(lián)公司主要從事成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)番禺,十年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575

登錄:

如果我們要實(shí)現(xiàn)小程序的登錄,不妨嘗試在開啟小程序的時(shí)候完成登錄。也就是說我們可以在app.js中的onlaunch方法中添加小程序登錄代碼。

如下:

//微信的登錄方法wx.login({      success: res => {          //登錄成功后會(huì)返回一個(gè)微信端提供的 code ,用來自定義登錄使用
        console.log("code",res.code);          //向自己的后臺(tái)發(fā)送請(qǐng)求
        wx.request({          url: this.globalData.URL+'login/',          data:{            code:res.code
          },          header:{            "content-type": "application/json"
          },          method:"POST",          success:function(e){            console.log(e)              //請(qǐng)求成功后會(huì)返回一個(gè)自己后端生成的 token 用來做其他操作的校驗(yàn),把token保存在本地
            wx.setStorageSync("token", e.data.data.token)
          }
        })        // 發(fā)送 res.code 到后臺(tái)換取 openId, sessionKey, unionId
      }
    })

后端代碼:


from rest_framework.views import APIViewfrom rest_framework.response import Responsefrom app01.wx import Wx_loginfrom django.core.cache import cachefrom app01 import modelsimport timeimport hashlibclass Login(APIView):
    def post(self,request):
        param = request.data        if param.get("code"):            #Wx_login是微信為我們提供的登錄方法,這里的data已經(jīng)有一個(gè)session_key和openid了
            data=Wx_login.login(param.get("code"))            if data:                # 1 session_key+時(shí)間戳等到一個(gè)key.(md5
                md5=hashlib.md5()
                md5.update(data.get("session_key").encode("utf8"))
                md5.update(str(time.time()).encode("utf8"))
                key=md5.hexdigest()                #2 session_key與openid做綁定等到val
                val=data.get("session_key")+'&'+data.get("openid")                #3key->val存到redis,
                cache.set(key,val)                #4把openid存到數(shù)據(jù)庫
                user_data=models.Wxuser.objects.filter(openid=data.get("openid")).first()                if not user_data:
                    models.Wxuser.objects.create(openid=data.get("openid"))                #5把key返回給小程序
                return Response({"code": 200, "msg": "suc","data":{"token":key}})            else:                return Response({"code": 202, "msg": "code無效"})        else:            return Response({"code":201,"msg":"缺少參數(shù)"})

Wx_login

import requests# appid={}&secret={}&js_code={}from app01.wx import settingsdef login(code):
    #code2Session是wx提供的url,填入你的appid和appsecret以及前端發(fā)送來的code
        url=settings.code2Session.format(settings.AppId,settings.AppSecret,code)

    reponse=requests.get(url=url)    #得到的data里面有session_key和openid。
    data=reponse.json()
    print(data)    if data.get("session_key"):        return data    else:        return False

settings

#你注冊(cè)的小程序的 appid 和 appsecret,code2Session是有官方提供的。pay_mchid是商鋪號(hào),需要工商證才能辦理,所以自己沒法搞。
AppId="wx69a0dca5c6b02a43"AppSecret="9d0f80642f4861b53df04a2f7bd65a59"code2Session="/tupian/20230522/jscode2session>luying: function () {    //這個(gè)方法的作用是獲取配置,看所有的權(quán)限
    wx.getSetting({        //獲取成功后進(jìn)入
      success(res) {        console.log("res", res.authSetting['scope.record'])          //authSetting是這個(gè)權(quán)限的列表,這一句是看里面有沒有錄音這個(gè)權(quán)限
        if (!res.authSetting['scope.record']) {            //沒有權(quán)限的話就會(huì)走這一句,這個(gè)方法的作用是獲取權(quán)限
          wx.authorize({              //固定寫法權(quán)限就是scope.xxx這樣的
            scope: 'scope.record',            success() {              // 用戶已經(jīng)同意小程序使用錄音功能,后續(xù)調(diào)用 wx.startRecord 接口不會(huì)彈窗詢問
              wx.startRecord()
            },              //在失敗前就已經(jīng)調(diào)用了上面的獲取權(quán)限,如果沒有給權(quán)限的話,就會(huì)走這個(gè)方法。
            fail() {              console.log("你沒有授權(quán)")
            }
          })
        } else {          // wx.startRecord()
        }
      }
    })
  },

獲取用戶信息的權(quán)限

因?yàn)橛脩粜畔⒖赡軙?huì)帶一些敏感信息,比如說session_key或者openid等等,在前端想要獲取信息的話,就必須請(qǐng)求權(quán)限。

需要注意,這種方式是錯(cuò)誤的

用戶信息

必須要這樣寫才行,才行,這樣,在獲取請(qǐng)求的同時(shí),會(huì)把一些關(guān)鍵的東西傳進(jìn)點(diǎn)擊事件里。

獲取用戶信

js

info1: function (res) {    console.log(res, "按鈕")    // wx.getUserInfo({
    //   success: function (res) {
    //     console.log(res, "用戶信息")
    //   }
    // })
    var that = this
    //這個(gè)方法是用來看你session_key有沒有過期的
    wx.checkSession({      success() {        //session_key 未過期,并且在本生命周期一直有效
        wx.request({          url: app.globalData.URL + "userinfo/",          data: {              //這個(gè)東西就是用戶信息了,里面包含敏感信息,是按鈕點(diǎn)擊的時(shí)候傳進(jìn)來的
            encryptedData: res.detail.encryptedData,              //同上,也是點(diǎn)擊的時(shí)候傳進(jìn)來的
            iv: res.detail.iv,              //登錄成功后返回的token帶上
            token: wx.getStorageSync("token")
          },          header: {            "content-type": "application/json"
          },          method: "POST",          success: function (e) {            console.log(e)

          }
        })
      },      fail() {        // session_key 已經(jīng)失效,需要重新執(zhí)行登錄流程
        wx.login() //重新登錄
      }
    })
  }

以上是“怎么實(shí)現(xiàn)小程序的登錄與授權(quán)”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


文章標(biāo)題:怎么實(shí)現(xiàn)小程序的登錄與授權(quán)-創(chuàng)新互聯(lián)
標(biāo)題路徑:http://weahome.cn/article/coodcj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部