中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

微信小程序獲取用戶session_key、openid、unioni的方法

發布時間:2020-12-21 11:44:37 來源:億速云 閱讀:462 作者:小新 欄目:移動開發

這篇文章主要介紹了微信小程序獲取用戶session_key、openid、unioni的方法,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

node.js的微信小程序獲取用戶session_key,openid,unionid的方法實現。

步驟:

1、通過wx.login接口獲取code既jscode,傳遞到后端;

2、后端請求

https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code

地址,就能獲取到openid和unionid。

小程序接口promise化和封裝

1、utils文件夾下創建wechat.js文件

/**
 * Promise化小程序接口
 */
class Wechat {
  /**
   * 登陸
   * @return {Promise} 
   */
  static login() {
    return new Promise((resolve, reject) => wx.login({ success: resolve, fail: reject }));
  };

  /**
   * 獲取用戶信息
   * @return {Promise} 
   */
  static getUserInfo() {
    return new Promise((resolve, reject) => wx.getUserInfo({ success: resolve, fail: reject }));
  };

  /**
   * 發起網絡請求
   * @param {string} url  
   * @param {object} params 
   * @return {Promise} 
   */
  static request(url, params, method = "GET", type = "json") {
    console.log("向后端傳遞的參數", params);
    return new Promise((resolve, reject) => {
      let opts = {
        url: url,
        data: Object.assign({}, params),
        method: method,
        header: { 'Content-Type': type },
        success: resolve,
        fail: reject
      }
      console.log("請求的URL", opts.url);
      wx.request(opts);
    });
  };

  /**
   * 獲取微信數據,傳遞給后端
   */
  static getCryptoData() {
    let code = "";
    return this.login()
      .then(data => {
        code = data.code;
        console.log("login接口獲取的code:", code);
        return this.getUserInfo();
      })
      .then(data => {
        console.log("getUserInfo接口", data);
        let obj = {
          js_code: code,
        };
        return Promise.resolve(obj);
      })
      .catch(e => {
        console.log(e);
        return Promise.reject(e);
      })
  };

  /**
   * 從后端獲取openid
   * @param {object} params 
   */
  static getMyOpenid(params) {
    let url = 'https://xx.xxxxxx.cn/api/openid';
    return this.request(url, params, "POST", "application/x-www-form-urlencoded");
  };
}
module.exports = Wechat;

2、修改小程序的app.js文件

let wechat = require('./utils/wechat.js');
App({
  onLaunch() {
    this.getUserInfo();
  },
  getUserInfo() {
    wechat.getCryptoData()
      .then(d => {
        return wechat.getMyOpenid(d);
      })
      .then(d => {
        console.log("從后端獲取的openid", d.data);
      })
      .catch(e => {
        console.log(e);
      })
  }
})

后端nodejs,是用的express命令行生成的項目框架,

1、創建common文件夾,創建utils文件,使用request模塊請求接口,promise化request

const request = require("request");
class Ut {

    /**
     * promise化request
     * @param {object} opts 
     * @return {Promise<[]>}
     */
    static promiseReq(opts = {}) {
	return new Promise((resolve, reject) => {
	    request(opts, (e, r, d) => {
		if (e) {
		    return reject(e);
		}
	        if (r.statusCode != 200) {
		    return reject(`back statusCode:${r.statusCode}`);
		}
		return resolve(d);
	    });
	})
    };

};

module.exports = Ut;

2、新增路由,appId、secret在小程序的后臺獲取

router.post("/openid", async (req, res) => {
  const Ut = require("../common/utils");
  try {
    console.log(req.body);
    let appId = "wx70xxxxxxbed01b";
    let secret = "5ec6exxxxxx49bf161a79dd4";
    let { js_code } = req.body;
    let opts = {
      url: `https://api.weixin.qq.com/sns/jscode2session?appid=${appId}&secret=${secret}&js_code=${js_code}&grant_type=authorization_code`
    }
    let r1 = await Ut.promiseReq(opts);
    r1 = JSON.parse(r1);
    console.log(r1);
    res.json(r1);
  }
  catch (e) {
    console.log(e);
    res.json('');
  }
})

結果:

微信小程序獲取用戶session_key、openid、unioni的方法

這個返回結果沒有unionid,按照官方的說法,需要在微信開放平臺綁定小程序;

感謝你能夠認真閱讀完這篇文章,希望小編分享微信小程序獲取用戶session_key、openid、unioni的方法內容對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,遇到問題就找億速云,詳細的解決方法等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

雷山县| 临漳县| 海兴县| 汕尾市| 岚皋县| 蒙阴县| 宁乡县| 宁河县| 永州市| 东丽区| 沈丘县| 长岭县| 太保市| 武平县| 淮滨县| 阳泉市| 安丘市| 昌宁县| 阿合奇县| 铜山县| 望城县| 万州区| 儋州市| 澳门| 盐池县| 台中市| 定兴县| 阿尔山市| 会昌县| 杭锦后旗| 塘沽区| 通渭县| 彭州市| 扎赉特旗| 鄯善县| 延津县| 伊金霍洛旗| 盱眙县| 会理县| 承德县| 巴彦淖尔市|