之前写过微信小程序获取唯一id(openid)的方法,但是发现我们的业务比较复杂,在一个类理写了太多的代码,所以进行了简单封装,让使用的时候,看起来不那么复杂,话不多说,看代码!
封装微信唯一id请求方法
/**
* 获取微信唯一id openid
* @param {*} code wxlogin之后返回的red.code
*/
export function wxOpenIdRequest(code) {
console.group('==============>WXOpenId请求<==============');
if (code == null || code == "") {
return false
}
return new Promise((resolve, reject) => {
const response = {};
wx.request({
url: 'https://api.weixin.qq.com/sns/jscode2session',//微信服务器获取appid的网址 不用变
method:'POST',//必须是post方法
data:{
js_code:code,
appid:'wx7fb67b8b262222597',//仅为实例appid
secret:'b2e097ade1bec7d1b334c76e7caf703',//仅为实例secret
grant_type:'authorization_code'
},
header: {
'content-type': 'application/x-www-form-urlencoded',
},
success: (res) => response.success = res.data,
fail: (error) => response.fail = error,
complete() {
if (response.success) {
console.info('微信id请求成功:', response.success,"code",response.success.code);
resolve(response.success);
} else {
console.info('请求失败:', response.fail);
reject(response.fail)
}
console.groupEnd();
},
});
});
}
将此方法放在你的网络请求封装类里就可以,如果没有封装好网络请求的小伙伴,可以通过首页二维码加我微信,我发给你,或者等等我整理一下传到github上,然后写一个传送门
😓😓😓
但是需要等我最近加班忙完....
调用
//导入到使用的累里面
import {
wxOpenIdRequest
} from "../../utils/network"
import {
setUserInfo,
} from "../../utils/service";
//登录方法
loginAction: function (params) {
//该button的open-type为"getUserInfo" 获取访问授权的,能获取到用户信息,打开开发者模式可以测试
if (params.detail.userInfo == null) {
return
}
var that = this
/*
* 登录成功 获取 用户信息
*/
setUserInfo(params.detail.userInfo);
// 微信登录
wx.login({
success: res => {
// 发送 res.code 到后台换取 openId, sessionKey, unionId
console.log('正在登录.....' + res.code);
if (res.code) {
// 获取唯一id
wxOpenIdRequest(res.code).then(success => {
console.info("获取微信openid成功");
console.log("id====", success.openid);
console.log("session_key====", success.session_key);
/*
* 储存方法
* 将openid存入本地缓存
*/
wx.setStorageSync('app_openid', success.openid);
//执行自己服务器的登录
getLogin({wxid: success.openid}).then(data => {
})
})
} else {
console.log("登陆失败");
}
}
})
},
这上面就是我们正常的流程了.首先是微信登录,微信登录成功后会给返回一个code,将此code传过去,获取微信唯一id,微信唯一id获取成功之后,就可以进行自己服务器的操作了
我们自己服务器的操作就是拿到openid,然后去请求我们自己的服务器进行登录,然后获取一个token,然后之后把token放到网络请求的header里,每次都要进行验证.
OK,讲完了,如果有不懂的同学,可以留言或者私聊问我,看到了就会及时回答!
👋👋👋 *加班去鸟*~~~
网友评论