国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 熱點 > 微信 > 正文

詳解微信小程序-獲取用戶session_key,openid,unionid - 后端為nodejs

2024-07-22 01:18:39
字體:
供稿:網(wǎng)友

微信小程序-獲取用戶session_key,openid,unionid - 后端為nodejs8.0+

步驟:

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文件夾下創(chuàng)建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 })); };  /**  * 發(fā)起網(wǎng)絡(luò)請求  * @param {string} url   * @param {object} params   * @return {Promise}   */ static request(url, params, method = "GET", type = "json") {  console.log("向后端傳遞的參數(shù)", 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);  }); };  /**  * 獲取微信數(shù)據(jù),傳遞給后端  */ 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、創(chuàng)建common文件夾,創(chuàng)建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;            
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 连山| 烟台市| 灵台县| 运城市| 堆龙德庆县| 疏附县| 辰溪县| 都匀市| 高淳县| 卢氏县| 揭东县| 牡丹江市| 安丘市| 彭泽县| 怀化市| 东丰县| 成安县| 镇安县| 依安县| 鄂伦春自治旗| 宁明县| 丽江市| 太谷县| 定远县| 江城| 申扎县| 龙门县| 双江| 鄂托克旗| 莱西市| 漳州市| 上饶市| 化州市| 施秉县| 安康市| 灵石县| 金川县| 景泰县| 桦甸市| 东平县| 潜江市|