亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

首頁 微信小程式 小程式開發(fā) 如何實現(xiàn)小程式的登入與授權(quán)

如何實現(xiàn)小程式的登入與授權(quán)

Mar 01, 2021 am 09:59 AM
小程式 授權(quán) 登入

如何實現(xiàn)小程式的登入與授權(quán)

登入:

如果我們要實作小程式的登錄,不妨嘗試在開啟小程式的時候完成登入。也就是說我們可以在app.js中的onlaunch方法中加入小程式登入程式碼。

如下:

//微信的登錄方法wx.login({      success: res => {          //登錄成功后會返回一個微信端提供的 code ,用來自定義登錄使用
        console.log("code",res.code);          //向自己的后臺發(fā)送請求
        wx.request({          url: this.globalData.URL+'login/',          data:{            code:res.code
          },          header:{            "content-type": "application/json"
          },          method:"POST",          success:function(e){            console.log(e)              //請求成功后會返回一個自己后端生成的 token 用來做其他操作的校驗,把token保存在本地
            wx.setStorageSync("token", e.data.data.token)
          }
        })        // 發(fā)送 res.code 到后臺換取 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)有一個session_key和openid了
            data=Wx_login.login(param.get("code"))            if data:                # 1 session_key+時間戳等到一個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

#你注冊的小程序的 appid 和 appsecret,code2Session是有官方提供的。pay_mchid是商鋪號,需要工商證才能辦理,所以自己沒法搞。
AppId="wx69a0dca5c6b02a43"AppSecret="9d0f80642f4861b53df04a2f7bd65a59"code2Session="https://api.weixin.qq.com/sns/jscode2session?appid={}&secret={}&js_code={}&grant_type=authorization_code"pay_mchid ='1415981402'pay_apikey = 'xi34nu5jn7x2uujd8u4jiijd2u5d6j8e'

這樣登入就完成了

授權(quán)

html就是一個按鈕加上一個點擊事件,就不寫了,主要看點擊事件做了什麼

luying: function () {    //這個方法的作用是獲取配置,看所有的權(quán)限
    wx.getSetting({        //獲取成功后進(jìn)入
      success(res) {        console.log("res", res.authSetting['scope.record'])          //authSetting是這個權(quán)限的列表,這一句是看里面有沒有錄音這個權(quán)限
        if (!res.authSetting['scope.record']) {            //沒有權(quán)限的話就會走這一句,這個方法的作用是獲取權(quán)限
          wx.authorize({              //固定寫法權(quán)限就是scope.xxx這樣的
            scope: 'scope.record',            success() {              // 用戶已經(jīng)同意小程序使用錄音功能,后續(xù)調(diào)用 wx.startRecord 接口不會彈窗詢問
              wx.startRecord()
            },              //在失敗前就已經(jīng)調(diào)用了上面的獲取權(quán)限,如果沒有給權(quán)限的話,就會走這個方法。
            fail() {              console.log("你沒有授權(quán)")
            }
          })
        } else {          // wx.startRecord()
        }
      }
    })
  },

(學(xué)習(xí)影片分享:php影片教學(xué)

取得使用者資訊的權(quán)限

因為使用者資訊可能會帶一些敏感訊息,比如說session_key或openid等等,在前端想要取得資訊的話,就必須請求權(quán)限。

要注意,這種方式是錯誤的

<button bind:tap="info">用戶信息</button>

必須要這樣寫才行,才行,這樣,在獲取請求的同時,會把一些關(guān)鍵的東西傳進(jìn)點擊事件裡。

<button open-type="getUserInfo" bindgetuserinfo="info1">獲取用戶信</button>

js

info1: function (res) {    console.log(res, "按鈕")    // wx.getUserInfo({
    //   success: function (res) {
    //     console.log(res, "用戶信息")
    //   }
    // })
    var that = this
    //這個方法是用來看你session_key有沒有過期的
    wx.checkSession({      success() {        //session_key 未過期,并且在本生命周期一直有效
        wx.request({          url: app.globalData.URL + "userinfo/",          data: {              //這個東西就是用戶信息了,里面包含敏感信息,是按鈕點擊的時候傳進(jìn)來的
            encryptedData: res.detail.encryptedData,              //同上,也是點擊的時候傳進(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() //重新登錄
      }
    })
  }

相關(guān)推薦:小程式開發(fā)教學(xué)

以上是如何實現(xiàn)小程式的登入與授權(quán)的詳細(xì)內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72
小紅書怎麼登入以前的帳號?它換綁後原來號碼遺失了怎麼辦? 小紅書怎麼登入以前的帳號?它換綁後原來號碼遺失了怎麼辦? Mar 21, 2024 pm 09:41 PM

隨著社群媒體的快速發(fā)展,小紅書成為許多年輕人分享生活、探索新產(chǎn)品的熱門平臺。在使用過程中,有時使用者可能會遇到登入先前帳號的困難。本文將詳細(xì)探討如何解決小紅書登入舊帳號的問題,以及如何應(yīng)對更換綁定後可能遺失原帳號的情況。一、小紅書怎麼登入以前的帳號? 1.找回密碼登入如果長時間未登入小紅書,可能導(dǎo)致帳號被系統(tǒng)回收。為了恢復(fù)存取權(quán)限,你可以嘗試透過找回密碼的方式重新登入帳號。操作步驟如下:(1)開啟小紅書App或官網(wǎng),點選「登入」按鈕。 (2)選擇「找回密碼」。 (3)輸入你註冊帳號時所使用的手機(jī)號碼

wallpaperengine登入別的號碼後下載別人的桌布怎麼辦 wallpaperengine登入別的號碼後下載別人的桌布怎麼辦 Mar 19, 2024 pm 02:00 PM

當(dāng)你在自己電腦上登過別人steam帳號之後,剛好這個別人的帳號也有wallpaper軟體,切換回自己帳號之後steam就會自動下載別人帳號訂閱的桌布,使用者可以透過關(guān)閉steam雲(yún)端同步解決。 wallpaperengine登入別的號碼後下載別人的桌布怎麼辦1、登陸你自己的steam帳號,在設(shè)定裡面找到雲(yún)端同步,關(guān)閉steam雲(yún)端同步。 2.登陸你之前登陸的別人的steam帳號,打開wallpaper創(chuàng)意工坊,找到訂閱內(nèi)容,然後取消全部訂閱。 (以後防止找不到壁紙,可以先收藏再取消訂閱)3、切換回自己的stea

快手電腦版怎麼登入-快手電腦版的登入方法 快手電腦版怎麼登入-快手電腦版的登入方法 Mar 04, 2024 pm 03:30 PM

近日有一些小夥伴諮詢小編快手電腦版怎麼登入?下面就為大家?guī)砹丝焓蛛娔X版的登入方法,有需要的小夥伴可以來了解了解哦。第一步:先在電腦的瀏覽器上百度搜尋快手官網(wǎng)。第二步:在搜尋結(jié)果清單裡面選取第一條。第三步:進(jìn)入快手官網(wǎng)主頁面後,點選影片的選項。第四步:點選右上角的使用者頭像。步驟五:在彈出的登入選單裡面點選二維碼登入。步驟六:之後打開手機(jī)上的快手,點選左上角的圖示。第七步:點選二維碼標(biāo)誌。第八步:在我的二維碼介面點擊右上角的掃描圖示之後,掃描電腦上的二維碼即可。第九步:最後電腦版的快手就登入成

Discuz後臺登入問題解決方法大揭秘 Discuz後臺登入問題解決方法大揭秘 Mar 03, 2024 am 08:57 AM

Discuz後臺登入問題解決方法大揭秘,需要具體程式碼範(fàn)例隨著網(wǎng)路的快速發(fā)展,網(wǎng)站建置變得越來越普遍,而Discuz作為一款常用的論壇建站系統(tǒng),受到了許多站長的青睞。然而,正是因為其功能強(qiáng)大,有時候我們在使用Discuz的過程中會遇到一些問題,例如後臺登入問題。今天,我們就來大揭秘Discuz後臺登入問題的解決方法,並且提供具體的程式碼範(fàn)例,希望能幫助到有需要

小紅書只記得帳號怎麼登入?只記得帳號怎麼找回來? 小紅書只記得帳號怎麼登入?只記得帳號怎麼找回來? Mar 23, 2024 pm 05:31 PM

小紅書如今已經(jīng)融入了許多人的日常生活,其豐富的內(nèi)容和便捷的操作方式讓使用者樂此不疲。有時候,我們可能會忘記帳號密碼,只記得帳號而無法登入確實讓人感到困擾。一、小紅書只記得帳號怎麼登入?當(dāng)忘記密碼時,我們可以透過手機(jī)驗證碼的方式登入小紅書。具體操作如下:1.開啟小紅書App或網(wǎng)頁版小紅書;2.點選「登入」按鈕,選擇「帳號密碼登入」;3.點選「忘記密碼?」按鈕;4.輸入你的帳號,點選「下一步」;5.系統(tǒng)會發(fā)送驗證碼到你的手機(jī),輸入驗證碼後點選「確定」;6.設(shè)定新的密碼並確認(rèn)。你也可以透過第三方帳號(如

百度網(wǎng)盤網(wǎng)頁版怎麼進(jìn)?百度網(wǎng)盤網(wǎng)頁版登入入口 百度網(wǎng)盤網(wǎng)頁版怎麼進(jìn)?百度網(wǎng)盤網(wǎng)頁版登入入口 Mar 13, 2024 pm 04:58 PM

  百度網(wǎng)盤不僅能儲存各種軟體資源,還能分享給別人,支援多端同步,如果你的電腦沒有下載客戶端,可以選擇進(jìn)入網(wǎng)頁版使用。那麼百度網(wǎng)盤網(wǎng)頁版要怎麼登入呢?下面就來看看詳細(xì)介紹?! “俣染W(wǎng)盤網(wǎng)頁版登入入口:https://pan.baidu.com(複製連結(jié)至瀏覽器開啟)  軟體介紹  1、分享  提供文件分享功能,使用者將文件整理,分享給需要的小夥伴。  2、雲(yún)端  不佔用太多內(nèi)存,大多數(shù)檔案都保存在雲(yún)端,有效節(jié)省電腦空間?! ?、相簿  支援雲(yún)相簿功能,將照片匯入到雲(yún)盤中,然後整理,方便大家查看?! ?/p>

115網(wǎng)址網(wǎng)頁版登入入口 115網(wǎng)址網(wǎng)頁版登入入口 Feb 23, 2024 pm 02:04 PM

115網(wǎng)盤是個能夠存放很多資源的網(wǎng)盤,那麼115網(wǎng)盤網(wǎng)頁版登入入口是什麼呢?用戶們需要輸入https://115.com這個網(wǎng)址就能夠進(jìn)入網(wǎng)盤,登入後就能使用。這篇115網(wǎng)盤網(wǎng)頁版登入最新入口分享能夠告訴大家具體該怎麼使用這個功能,趕快看看吧。 115網(wǎng)盤網(wǎng)頁版登入入口網(wǎng)站分享:https://115.com具體介紹:1、首先需要選擇一個方式來登入網(wǎng)盤。 2、在右上角能夠看到上傳的檔案。 3.可以在這裡新建資料夾,切換不同模式。 4、可以在文件裡加上不同的標(biāo)籤。 5.在網(wǎng)站上面能夠看到用戶們的私訊。

如何解決Laravel登入時間失效的常見問題 如何解決Laravel登入時間失效的常見問題 Mar 06, 2024 pm 09:24 PM

如何解決Laravel登入時間失效的常見問題在使用Laravel開發(fā)Web應(yīng)用程式時,登入認(rèn)證是一個非常重要的功能。然而,有時候使用者登入後長時間不操作,頁面可能會自動登出或認(rèn)證失效。這個問題較為常見,以下將介紹如何透過設(shè)定session的時間來解決這個問題,並提供具體的程式碼範(fàn)例。 1.設(shè)定session的過期時間在Laravel中,預(yù)設(shè)為sessi

See all articles