微信的授权登录
程序员文章站
2024-02-18 14:41:10
...
授权登录是是我们常见的功能,简单来说就是请求token,然后将token存储下来,供后面的使用,今天我们就来看看请求token怎么请求
先将request封装一下,方便我们用于请求接口
let ajaxTimes=0;
export const request=(params)=>{
// 判断 url中是否带有 /my/ 请求的是私有的路径 带上header token
let header={...params.header};
if(params.url.includes("/my/")){
// 拼接header 带上token
header["Authorization"]=wx.getStorageSync("token");
}
ajaxTimes++;
// 显示加载中 效果
wx.showLoading({
title: "加载中",
mask: true
});
// 定义公共的url
// const baseUrl="https://api.zbztb.cn/api/public/v1";
const baseUrl="https://api-hmugo-web.itheima.net/api/public/v1";
return new Promise((resolve,reject)=>{
wx.request({
...params,
header:header,
url:baseUrl+params.url,
success:(result)=>{
resolve(result.data.message);
},
fail:(err)=>{
reject(err);
},
complete:()=>{
ajaxTimes--;
if(ajaxTimes===0){
// 关闭正在等待的图标
wx.hideLoading();
}
}
});
})
}
在封装一下login
/**
* promise 形式 login
*/
export const login=()=>{
return new Promise((resolve,reject)=>{
// wx.login()这个接口本身是用来静默登录
wx.login({
timeout:10000,
success: (result) => {
resolve(result);
},
fail: (err) => {
reject(err);
}
});
})
}
最后我们请求token
Page({
// 获取用户信息
async handleGetUserInfo(e) {
console.log(e);
try {
//传入四个参数,获取用户信息
const { encryptedData, rawData, iv, signature } = e.detail;
// 获取小程序登录成功后的code
const { code } = await login();
const loginParams={ encryptedData, rawData, iv, signature ,code};
// 发送请求 获取用户的token
const {token}=await request({url:"/users/wxlogin",data:loginParams,method:"post"});
// 把token存入缓存中 同时跳转回上一个页面
wx.setStorageSync("token", token);
wx.navigateBack({
delta: 1
});
} catch (error) {
console.log(error);
}
}
})
上一篇: phpcms定时发布文章解决办法
下一篇: 弹出层解决思路