当前位置:网站首页>H5之微信授权登陆 (uniapp网页版微信授权登录)
H5之微信授权登陆 (uniapp网页版微信授权登录)
2022-06-21 21:16:00 【wh20141212】
今天来复盘代码了 不然这个月过完 我可能脑子里又啥都不剩了 感觉自己跟个金鱼脑一样 十分沧桑
1.首先 要做微信授权登录 你的有一个微信公众号 因为授权登录要配置APPID 以及网页授权域名
这里的网页授权域名真的让我栽了好多的坑一言难尽 啥也不说了 直接上图
公众号的开发 —>基本配置中设置
**接下来在公众号的开发 —>接口权限中设置域名 **
这个域名一定要正确 而且是安全域名 因为不仅代码放在上面 微信授权回调的域名也是这个

在网页服务中的 页面授权用户基本信息中设置 一共可以设置两个 一个开发环境 一个测试环境
设置完就可以开发了 开发前建议看一变官方文档 当然如果没看懂 可以多看几遍 链接我放在这里了
https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html#0
然后就是页面了
因为后期我得代码都带了token请求头 所以我写了一个跳转页面
在这个界面拉起授权 授权成功获取到信息之后在跳转到 首页
(ps:我把这个页面放在了pages.json)的第一个 这样一进来就能授权了
废话不多说上代码:
对了请注意下面的那个拉取基本信息的链接中的重定向路径和appid被我隐藏了 请大家自己配置
将URL 及 APPID 替换成自己的即可 至于如何获取请看上面 上面配置的域名就是这里重定向的路径
跳转界面springboard.vue
<template>
<view class="springboard">
<view class="">
code:{
{
res}}
</view>
<view class="">
access_token接口:{
{
result}}
</view>
<view class="">
access_token :{
{
access_token}}
<view class="">
openid:{
{
openid}}
</view>
</view>
<view class="">
用户信息 {
{
userInfo}}
</view>
<!-- 跳板页面 这个界面主要用来 获取缓存的信息 如果没有缓存的信息则跳转去授权 如果有直接跳转去商城界面-->
</view>
</template>
<script>
export default {
data() {
return {
src:'',
result:'',
option:'',
res:'',
userInfo:'',
access_token:'',
openid:'',
index:0
};
},
methods:{
getpower() {
let url =
"https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=URL&response_type=code&scope=snsapi_userinfo&state=STATE&connect_redirect=1#wechat_redirect"
window.location.href = url
},
sendCode(code){
uni.showToast({
title:code
})
uni.request({
url: 'XXXXXXX/login/login_controller/access_token',
method:'POST',
data: {
code: code
},
success: (res) => {
console.log(res.data);
this.result = res.data
this.access_token = this.result.data.access_token
this.openid = this.result.data.openid
uni.request({
url: 'XXXXXXX/login/login_controller/access_user', //仅为示例,并非真实接口地址。
method:'POST',
data: {
access_token:this.access_token,
openid: this.openid
},
success: (respones) => {
this.userInfo = respones
console.log(res.respones);
}
});
}
});
},
},
onLoad(option) {
this.option = option
if (option.code == null) {
this.getpower()
} else {
this.res = option.code
// uni.showToast({
// title:option.code
// })
this.sendCode(option.code)
}
}
}
</script>
<style lang="less" scoped>
.springboard{
height: 99vh;
position: relative;
text-align: center;
background-size: cover;
// background-image: url('http://zons.oss-cn-shenzhen.aliyuncs.com/upload/20200703/20200703/1593768723d3eb9a9233e52948740d7eb8c3062d14.jpg');
// background-image: url('http://zons.oss-cn-shenzhen.aliyuncs.com/upload/20200703/20200703/1593768995d3eb9a9233e52948740d7eb8c3062d14.jpg');
}
.LoginBtn{
width: 50%;
border: 1px solid #409eff;
padding:20rpx ;
display: inline-block;
background-color: #409eff ;
color: #fff;
border-radius: 10rpx;
}
</style>
这里说明一下 做授权的时候 无法在线测试 就是说本地的代码无法测试 必须发包放到服务器上测试
所以我把返回值都展示在页面上就知道接口是否有问题了 后期自行屏蔽即可
另外踩了一个巨坑 就是微信授权返回40029 code码失效的问题
查了很多资料 也设置了 好几种方法
最后根据自身情况就是 第一 发包以后到手机端测试 或者在微信开发者工具中测试 注意 就算是微信开发者工具中测试也是跑的线上的代码 其次为了防止发生302不稳定跳转 防止code码失效 我添加了connect_redirect=1
踩坑二:如果在微信开发者工具中运行时出现 response_type 参数错误 那么就是拉起授权的链接有问题了 请重新配置
踩坑三 后端的接口配置的使用到的APPID 要与前端一致
最后说一下两个接口
第一个接口时获取到code码以后 将code码传给后端 后端 用code码获取到 openID 然后可以根据 openID 获取到用户个人信息
这里第二个接口就是根据第一个接口的返回值 获取用户个人信息的 抓到用户信息代表授权成功了
**注意注意注意!!!**请求要使用post
好啦 到这里基本就讲解完毕了 下一篇在具体讲下 踩到的坑以及几种解决方法
希望对大家有用
边栏推荐
猜你喜欢

左手代码,右手开源,开源路上的一份子

Getting to know Vxe table (I)

WPF 路由

语音断点检测(短时改进子带谱熵)

Analysis of 43 cases of MATLAB neural network: Chapter 19 handwritten font recognition based on SVM

. File header parsing of BMP pictures

WPF thread manipulation UI problem

深入浅出讲解 JS 的微任务与宏任务

Translation software Bob installation tutorial

流式细胞分析Flowjo 10介绍以及超详细图文安装激活教程
随机推荐
Left hand code, right hand open source, part of the open source road
Uwp shadow effect
About LG (n!) Asymptotically compact supremum of
The way of FPGA -- interface level standard between digital systems
班主任让开股票账户,在启牛开户安全吗?
实践 DevOps 时,可能面临的六大挑战
plt修改横纵坐标颜色
C# 报错:未通过等待任务或访问任务的 Exception 属性观察到任务的异常。因此,终结器线程重新引发了未观察到的异常。
分布式数据库使用逻辑卷管理存储之扩容
WPF ListBox虚拟化
左手代码,右手开源,开源路上的一份子
Multi order MFCC extraction for speech signal processing (matlab)
Uwp confirms whether there is pop-up display
Translation software Bob installation tutorial
C# WindowFromPoint在64位程序中无效
Apache ShardingSphere 5.1.2 发布|全新驱动 API + 云原生部署,打造高性能数据网关
The method of ram and ROM initialization in FPGA design
WPF tablet
If you spend 200W to buy traffic, it is better to start at 0 cost and make an independent station with high private domain operation income!
UWP Dispatcher用法