1. 程式人生 > >微信小程式使用者登入前後臺詳解

微信小程式使用者登入前後臺詳解

一. 前端

 wx.login({
      success: function(res) {
           if (res.code) {
                //獲取使用者資訊
                wx.getUserInfo({
                     success: function (msg){
                          //發起網路請求
                         wx.request({
                              url: 'https://test.com/onLogin.php'
, method: 'POST', header: { // 'content-type': 'application/json' 'content-type': 'application/x-www-form-urlencoded' }, data: { code: res.code, encryptedData: msg.encryptedData, iv: msg.iv }, success: function
(data){
console.log(data); }), fail: function (res) { console.log(res) } }) } }) } else
{ console.log('獲取使用者登入態失敗!' + res.errMsg) } } });

程式碼詳解:
1. wx.login返回的res如下圖
這裡寫圖片描述
code為登入憑證,使用一次後失效
2. wx.getUserInfo返回的msg如下圖
這裡寫圖片描述
msg裡的encryptedDataiv都非常重要的敏感資訊,後面講後臺介面時會講到
3. data為我們後臺登入介面返回的資料(業務資料)

二. 後端

1. 第一步,requier wxBizDataCrypt.php 檔案,官方檔案點我下載
2. 通過code 換取 session_key,openid,unionid 會話金鑰,按照官方文件來即可,介面地址:
    https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code

返回的是包含openid和unionid的json字串(多平臺應該是取unionid,進行查詢資料庫的操作,獲取使用者在另外平臺上的資料了,unionid機制見文末解析),轉換成陣列格式如下圖

錯誤時返回的json包如下,

    {"errcode": 40029,"errmsg": "invalid code"}
3. 獲取使用者詳細資訊
$pc = new WXBizDataCrypt($appid, $sessionKey);
$errCode = $pc->decryptData($encryptedData, $iv, $data );
  1. encryptedDataiv為前臺傳過來的引數(密文)
  2. $errCode !=0 則驗證失敗,介面應該返回失敗資料
  3. $data為解密後的使用者基本資訊,json格式,轉換陣列後如下圖
    這裡寫圖片描述
    1. 通過後就獲取到使用者詳細資訊了
    2. 末尾返回的資料就是上面前端的程式碼詳解裡的data引數啦

openid與unionid

  1. 同一使用者同一應用(公眾號、小程式等)的openid是相同的
  2. 不同使用者不同應用的openid是不同的
  3. 同一個微信開放平臺帳號下的應用,使用者的unionid是唯一的
  4. 不同應用若想獲取同一使用者在其他應用資料,應先根據unionid獲取使用者在該平臺的openid,然後根據openid獲取相應資料
  5. 更多詳情參考官方文件

相關推薦

程式使用者登入前後臺

一. 前端 wx.login({ success: function(res) { if (res.code) { //獲取使用

程式setData()方法的以及對陣列/json操作

一、setData()方法: 1、引數接受一個物件,以key,value的形式表示; 2、引數和變數名稱一致,可用一個值代替(es6新語法特性) 如上圖所示,在this.data中設定ceshi這條資料,在方法中,我們定義ceshi變數讓其等於that.data.ce

程式 資料訪問例項

先簡單說一下,小程式的結構 如圖所示 1、每個檢視(.wxml)只需要新增對應名字的指令碼(.js)和樣式(.wxss)就可以了,不需要引用,page下面的指令碼以及樣式都是繼承至最外面的app.js , app.wxcss 2、指令碼也就是.js檔案,他有固定格式:p

程式畫布使用範例

今天關於微信小程式的畫布,做了個簡單的範例,大家來看看吧 wxml的程式碼 <canvas style="width: 300px; height: 200px;" canvas-id="fourCanvas" bindtouchstart="star

程式上傳檔案

做微信小程式難免會遇到上傳檔案的問題。今天就給大家說一個簡單的上傳檔案的例子吧 wxml程式碼 <button bindtap="upload">上傳檔案</button> js程式碼 Page({ data:{

程式navigateTo資料傳遞

本文主要和大家介紹微信小程式使用navigateTo資料傳遞的例項的相關資料,希望通過本文能幫助到大家,需要的朋友可以參考下,希望能幫助到大家。 微信小程式使用navigateTo資料傳遞的例項 1,傳遞基本資料型別 index.js 傳送頁JS Page({

程式之轉發流程

信小程式之獲取轉發到群資訊 微信小程式轉發是個有意思的流程,涉及以下4個方法: Page.onShareAppMessage({}) 設定右上角“轉發”配置,及轉發後回撥函式返回 shareTicket 票據wx.showSahreMenu() 使用者點選右上角後,顯示“

程式授權登入獲取使用者資訊

今天來說一下微信小程式的授權登入獲取使用者資訊,首先我們看微信提供的小程式開發文件: https://blog.csdn.net/qq_41971087/article/details/82466647 微信登入的流程和步驟: 步驟:(個人): 第一步:微信小程式

程式Ⅴ [獲取登入使用者資訊,重點openID()]

♩ 背景 其實這篇文章幾個月前就寫完了,但是這段時間,微信小程式官方文件有了更新,同事在我自己的實際操作過程中,發先之前寫的過於繁雜,所以現在進行簡化梳理,歡迎指摘. 語言框架:Th

程式獲取登入手機號

小程式獲取登入使用者手機號。 因為需要使用者主動觸發才能發起獲取手機號介面,所以該功能不由 API 來呼叫,需用 <button> 元件的點選來觸發。 首先,放置一個 button 按鈕,將 button 的 open-type 的屬性值設為 getPhoneNu

程式登入頁例項 —— 程式實戰系列(5)

提供一個登入頁的案例,供同學們使用 專案效果圖: 目錄結構: 圖片資源: name.png key.png loginLog.jpg login.wxml: <view c

程式登入過程簡介

        對於微信而言, 小程式算是第三方了, 那麼, 小程式是如何登入的呢? 微信肯定不能把密碼給小程式, 讓小程式來登入啊, 小程式甚至無法獲取微信的微訊號。 在這裡, 我們需要徹底把微信和小程式分開, 割裂來看, 才好理解。         那小程式是怎樣來登入

程式(編輯登入頁面以及頁面跳轉)

第一步  建立新的qq郵箱開通小程式第二步 下載適合本電腦的版本  微信開發工具第三步 開始建立  wxml為新增頁面程式碼<view class='container'> <view class='header'>登入頁面</view>

程式登入頁例項

<view class="container"> <view class="login-icon"> <image class="login-img" src="../images/loginLog.jpg"><

程式授權登入介面

1.首先接收前端傳過來的code 2.帶上appid,secret以及code去請求微信,獲取openid,那倒openid就可以獲取使用者的資訊了 獲取到openid,將openid返回給前端,前

程式開發登入問題

最近微信小程式發現一個很奇怪的問題,授權的登入問題,同事可以登入上去,我的就登入不上去,還一直顯示登入失敗,只有我把資料寫死了才可以進去 經過多次的列印返回資料以及測試介面,最後問了好幾個小夥伴發現因為用的不是公司的appid導致的,需要授權拉進專案開發人員裡面,然後使用公司的就可以了,居

程式 保持登入狀態(自己服務端的session)的解決方案(java)

問題:由於wx.request()發起的每次請求對於伺服器來說都是不同的會話(wx.request()請求是先經過微信伺服器再到達我們的伺服器),這樣導致後續請求都相當於未登入的狀態。解決方案:session資訊存放在cookie中以請求頭的方式帶回給服務端JSESSIONI

程式登入,模板訊息,服務通知

1.登入流程圖 1).前端呼叫wx.login()獲取code 2).前端呼叫wx.request()傳送code給後端 3).後端根據appid(後臺取得)+appsecret(後臺取得)+code(前端傳送)傳送到微信介面,得到session_key+openid等介面地

程式授權登入流程總結

1.登陸只需傳送code到後臺,後臺獲取openid,根據openid到資料庫中查詢使用者資訊,若有則返回使用者資訊,若沒有將該openid插入資料庫, 2.後臺生成token(可以是使用者id和其他隨機串組合的加密字串),返回前臺token,和使用者資訊 3.前臺判斷使用者

程式java登入授權解密獲取unionId(填坑)

官方流程圖: 第一步:獲取code 說明: 小程式呼叫wx.login() 獲取 臨時登入憑證code ,並回傳到開發者伺服器。 開發者伺服器以code換取 使用者唯一標識openid 和 會話金鑰session_key。 之後開發者伺服器可以根據