WeChatアプレット登録許可
26922 ワード
WeChatアプレット登録許可
私達はプロジェクトの中で、登録して、授権するページ、すべてtoken値を伝えなければなりません.一般商品詳細ページの商品コレクションは、ショッピングカートに参加します.ショッピングカートのページは全部tokenを伝えなければなりません.トムは何ですかtokenは、フロントエンド認証の一態様であり、tokenはバックエンドから生成され、時効性がある.WeChatアプレットはどのように登録して権限を授けて、tokenの第一歩をもらいます.登録プロセスの先端->バックエンド->テンセントサーバwx.login->wx.request->バックエンド->テンセントサーバのWeChatアプレットは公式サイトに登録します.
https://developers.weixin.qq.com/miniprogram/dev/api/open-api/login/wx.login.html
第二ステップ:具体的に登録を実現する-->登録するかどうかを検出する——>登録していない場合は、まずユーザー情報を取得して登録する(会社データベースに書き込む)->登録すると、登録弾枠をテンプレートにカプセル化し、参照を行います.まず、要求インターフェースファイルをカプセル化します. iv暗号化値 code encryptData暗号化データ
私達はプロジェクトの中で、登録して、授権するページ、すべてtoken値を伝えなければなりません.一般商品詳細ページの商品コレクションは、ショッピングカートに参加します.ショッピングカートのページは全部tokenを伝えなければなりません.トムは何ですかtokenは、フロントエンド認証の一態様であり、tokenはバックエンドから生成され、時効性がある.WeChatアプレットはどのように登録して権限を授けて、tokenの第一歩をもらいます.登録プロセスの先端->バックエンド->テンセントサーバwx.login->wx.request->バックエンド->テンセントサーバのWeChatアプレットは公式サイトに登録します.
https://developers.weixin.qq.com/miniprogram/dev/api/open-api/login/wx.login.html
第二ステップ:具体的に登録を実現する-->登録するかどうかを検出する——>登録していない場合は、まずユーザー情報を取得して登録する(会社データベースに書き込む)->登録すると、登録弾枠をテンプレートにカプセル化し、参照を行います.まず、要求インターフェースファイルをカプセル化します.
var API_BASE_URL = 'https://api.it120.cc'
var subDomain = 'jbn1995' //
let request = (url, needSubDomain, method, data) => {
const _url = API_BASE_URL + (needSubDomain ? '/' + subDomain : '') + url
return new Promise((resolve, reject) => {
wx.request({
url: _url,
method: method,
data: data,
header: {
'Content-Type': 'application/x-www-form-urlencoded'
},
success(request) {
resolve(request.data)
},
fail(error) {
reject(error)
},
complete(aaa) {
//
}
})
})
}
/**
* promise finally ,
*/
Promise.prototype.finally = function (callback) {
var Promise = this.constructor;
return this.then(
function (value) {
Promise.resolve(callback()).then(
function () {
return value;
}
);
},
function (reason) {
Promise.resolve(callback()).then(
function () {
throw reason;
}
);
}
);
}
具体的にはステップ1を実現します.パッケージの登録テンプレートの「許可」ボタンをクリックして、processLogin方法を実行します.<button class="jbn_login" bindgetuserinfo="processLogin" open-type="getUserInfo"> button>
processLogin方法:const WXAPI = require('apifm-wxapi');
const index = require('../../utils/index.js')
processLogin(e) {
console.log(e.detail.userInfo)
if (!e.detail.userInfo) {
wx.showToast({
title: ' ',
icon: "none"
})
return
}
// userinfo , register
index.register(this)
},
2.userInfoがあれば、register登録方法を呼び出し、登録によってテンセント情報を会社のデータベースに書き込むには3つのパラメータが必要です.async function register(page) {
let _this = this;
wx.login({
success: function (res) {
let code = res.code; // code ,
wx.getUserInfo({
success: function (res) {
let iv = res.iv;
let encryptedData = res.encryptedData;
let referrer = '' //
let referrer_storge = wx.getStorageSync('referrer');
if (referrer_storge) {
referrer = referrer_storge;
}
//
WXAPI.register_complex({
code: code,
encryptedData: encryptedData,
iv: iv,
referrer: referrer
}).then(function (res) {
console.log(res)
_this.login(page);
})
}
})
}
})
}
3.登録されたloginメソッドを実行し、ログインしてtokenを取得する.async function login(page) {
const _this = this
wx.login({
success: function (res) {
WXAPI.login_wx(res.code).then(function (res) {
if (res.code == 10000) {
//
_this.register(page)
return;
}
if (res.code != 0) {
//
wx.showModal({
title: ' ',
content: res.msg,
showCancel: false
})
return;
}
wx.setStorageSync('token', res.data.token)
wx.setStorageSync('uid', res.data.uid)
if (page) {
page.onShow()
}
})
}
})
}
4.登録状態とtokenが期限切れかどうかを検出する// token
// ( )
async function checkSession(){
return new Promise((resolve, reject) => {
//
wx.checkSession({
success() {
return resolve(true)
},
fail() {
return resolve(false)
}
})
})
}
// , token true false
// app.js onload index.checkHasLogined ,
async function checkHasLogined() {
// token
const token = wx.getStorageSync('token')
// token, false
if (!token) {
return false
}
//
/**
* session_key , session_key
*/
const loggined = await checkSession()
// , token, false
if (!loggined) {
wx.removeStorageSync('token')
return false
}
// token
const checkTokenRes = await WXAPI.checkToken(token)
// token , token false
if (checkTokenRes.code != 0) {
wx.removeStorageSync('token')
return false
}
// token , true
return true
}
module.exports = {
login: login,
register: register,
checkSession:checkSession,
checkHasLogined:checkHasLogined
}