(第三方平台)开发相关,解除80端口占用,微信公众号分享jssdk实现,微信开放平台登录接口接入,2022微信分享接入本地调试,微信分享定制
一、开发相关
1.平台地址
微信开放平台
QQ互联平台SDK
2.文章收集
来自CSDN兄台的QQ登录使用的教程
微信网站应用开发的详细流程和引导
VueJs单页应用实现微信网页授权及微信分享功能
【必看精贴】微信网页分享开发,配置本地调试
微信分享功能实现
3.本地测试
1.关于本地测试OAuth,PC和移动修改hosts
2.whistle修改80代理端口
二、解除80端口占用
控制面板->服务->将下图服务停止即可
上述whistle使用,不过情况不太好,成本太高。
故暂使用80端口配合nginx转发至本机服务器端口3000实现。
三、微信公众号分享jssdk实现
1.注册服务号,认证300元后,即可使用权限API。
2.jssdk下载,以及安全域名配置 + ip白名单设置。
此处先尝试在云服务器上传MP_verify。让申请先通过,
在测试的时候修改本机的HOSTS 让k12-code.com指向本地服务器80端口(没必要使用443配合证书),应该就可以调用接口了。
3、根据 JSSDK文档 完成access_token的生成和ticket票据的获取,生成签名;
// 注:这个签名由客户端传入 当前页面的URL,不带哈希部分 给服务端,再由服务端进行签名生成返回给客户端,客户端最终完成 wx.config 的初始化,然后客户端在微信环境下就能调用微信分享功能了。
微信 JS 接口签名校验工具
4、在微信开发者工具,访问k12-code(映射本机127.0.0.1),进行wx.config的配置打开debug调用接口是否可使用。
可以看到,权限调用成功。(二级域名也可以访问)
为验证之前本机域名映射的正确性,我们换一个未绑定的域名(也通过改HOSTS 本机映射)。
失败,提示域名错误。
到这儿,其实微信接口的本地开发,或者第三方平台接口的本地开发的性质都一样,都可以通过修改HOSTS映射至本机IP。这里涉及DNS解析知识,以后补给。
接下来是开发测试分享接口
其中3.1,3.2无法本机模拟测试,但是3.3和3.4均测试成功。开发到这就告一段落了。
四、微信开放平台登录接口接入
1.企业号注册 (QQ邮箱)
2.网站应用创建 (审核)。
3.开发资质认证 (300元)。
4.开始接入,按照 文档步骤
一样的本地开发,采用HOSTS修改映射。nginx转发请求
这里搭建测试环境的就不论了。直接到用户扫码后,重定向到网页(服务器),服务器接收到的code,如下:
可以拿code获取access_token // 这里我用node https模块发送请求
通过access_token调接口获取用户信息
之后就是涉及服务端数据入库的过程,注:如果希望同平台多应用用户数据共同,需要用到unionid,它代表当前开发平台账号的用户通用标识。
补充:基于cookie(即session标识前后联调),记得将所有请求域名都统一修改,不要使用localhost发请求,也不要请求的host是localhost,因为request cookie只会携带和目标host域名匹配的cookie数据。
来自2012年大佬的点拨:Cookie的Domain的作用域/有效范围
2022微信分享接入&本本地调试
1、微信分享接入
对于服务端: 配置 【IP白名单】,并获取 access_token 。
对于客户端: 使用 jssdk 当前客户端的域名,必须是 配置在 公众号里的 【JS接口安全域名】里。
2、关于本地调试:
1、hosts 代理 k12-code.com (js 接口安全域名)
2、nginx 变更
3、服务端 session 注入变更。
4、客户端 API 基址变更
5、微信开发者工具 - 公众号调试模式
微信分享定制
如果上述分享接入,和本地调试都没问题,其实微信分享定制,也就是利用规则的问题:
首先我们知道 微信分享实体化 需要调研JSSDK,且要传入4个参数:
- title,
- desc,
- link,
- imgUrl
既然参数都是动态化的,那么我们就可以抽象出来,首先建一个页面。
这里原本直接定制化即可,不过微信要求 跳转的链接 link,也必须是 JS接口安全域名 列表里的。
这里就需要转一下思路,我们可以跳转合法的JS域名,在页面内再做重定向。
link => 个人页面 -> (重定向)实际页面
这里唯一麻烦的就是 微信会对未转义的参数进行过滤,所以 link 参数,需要 encodeURIComponent 一下;
1、这里我直接贴二维码生成的代码:
// 生成二维码
async function genQRCode(data) {// 将标题 描述 封面 转成拼接参数let { href, origin } = window.location;// href = "https://admin.k12-code.com/setting/wx-share-custom"// origin = "https://admin.k12-code.com"// 这里我们通过 Link 定制化,全部访问 ?redirect=链接 内部逻辑进行跳转即可。const redirectLink = encodeURIComponent(`${origin}/?redirect=${link}`);const hash = `#link=${redirectLink}&title=${title}&desc=${desc}&imgUrl=${imgUrl}&mode=share`;const wholeUrl = href + hash;const qrcodeImage = await text2QRCode(wholeUrl);console.log(wholeUrl);createBasicModal({title: "微信扫描当前二维码",footer: null,children: (<div di-fl=""><img src={qrcodeImage} width="200" /><p co-da="" ml-10="">扫码后,通过右上角按钮进行转发 分享或转发即可。</p></div>),});
}
2、二维码链接地址如下:
https%3A%2F%2Fadmin.k12-code.com%2Fsetting%2Fwx-share-custom%23link%3Dhttps%3A%2F%2Fadmin.k12-code.com%3Fredirect%3Dhttp%3A%2F%2Fwww.baidu.com%26title%3D%E7%99%BE%E5%BA%A6%E4%B8%80%E4%B8%8B%26desc%E6%97%A0%26imgUrl%3Dhttps%3A%2F%2Fimg.com%2F111.png%26mode%3Dshare
这里我们#
后面的参数就是4个微信分享参数,然后我们再 useEffect 中进行解析,并更新微信jssdk实体
注: link 包括了跳转页 以及 页内重定向参数。
useEffect(() => {const hashParams = parseHash();let { imgUrl, title, link, desc, mode } = hashParams;imgUrl = decodeURIComponent(imgUrl);title = decodeURIComponent(title);link = decodeURIComponent(link);desc = decodeURIComponent(desc);// 如果是移动端 处于分享状态if (mode === "share") {setShareMode(true);setLink(link);setDesc(desc);setTitle(title);setImgUrl(imgUrl);// 更新微信分享实体updateWXShareEntity({title,desc,link,imgUrl,});}
}, []);
3、上述useEffect 实际是用户扫码后,在微信客户端触发的,然后维信解析出的链接 就是 link 链接
https%3A%2F%2Fadmin.k12-code.com%3Fredirect%3Dhttp%3A%2F%2Fwww.baidu.com
注: 我们需要在 根文件进行 jssdk 初始化wx.config,不然 wx.ready 无法正常触发,也就没办法分享
然后点击右上角分享,就可以分享成功,生产微信卡片。
4、然后手机点击微信卡片后,就会跳转 link。
为了加快跳转,我们再 .html 内直接引入 script redirect.js 标签 并解析;
/*** @description /redirect 检测并跳转(目前用于微信分享定制的网页转发)*//*** 解析 search 参数*/
function parseSearch() {// 需兼容 hash模式const { href } = window.locationconst searchIndex = href.indexOf('?')let search = href.slice(searchIndex)if (!search.includes("?")) {return {};}search = search.slice(1);const map = {};const searchArr = search.split("&");searchArr.forEach((i, index) => {const [k, v] = i.split("=");map[k] = v;});return map;
}// 自执行检测并跳转
!function () {const { href } = window.location// 解析 redirectconst keyList = href.split('?redirect=')console.log({ ...window.location })if (keyList.length > 1) {const redirectUrl = decodeURIComponent(keyList.pop())window.location.href = redirectUrl}
}()
5、重定向跳转完成!
(第三方平台)开发相关,解除80端口占用,微信公众号分享jssdk实现,微信开放平台登录接口接入,2022微信分享接入本地调试,微信分享定制相关推荐
- 微信公众号,JS-SDK获取位置信息,并调起第三方地图App导航
微信公众号关联网页获取位置信息,可以参照<微信公众平台技术文档>-> 微信JS-SDK说明文档,官方链接地址:https://mp.weixin.qq.com/wiki?t=reso ...
- 第六篇 :微信公众平台开发实战Java版之如何自定义微信公众号菜单
我们来了解一下 自定义菜单创建接口: http请求方式:POST(请使用https协议) https://api.weixin.qq.com/cgi-bin/menu/create?access_to ...
- 微信公众号,微信开发平台,openid问题
小程序的openid和公众号的openid是否一致 早期的产品只用了公众号,没有注册开放平台(没有unionid).然后现在需要上线小程序,这种情况下,企业是同一个企业的,但是公众号的openid和小 ...
- 微信公众号开发实战 | 01:环境配置
文章目录 前言 配置Node开发环境 安装Node.js 安装TypeScript 安装localtunnel 安装IDE 实现一个简单的自动回复功能 前言 在本系列的博客中我们将从零开始搭建一个基于 ...
- 微信公众号开发系统入门教程(公众号注册、开发环境搭建、access_token管理、Demo实现、natapp外网穿透)
由于图片图床问题,文章部分图片无法预览,暂时把该文章迁移至简书,给大家带来麻烦,抱歉了. 感兴趣的小伙伴可参考:https://www.jianshu.com/p/cc1b1050b5b4 Autho ...
- 微信公众号开发步骤(一)
微信公众号主要有以下几个步骤 微信公众号的通讯机制 微信公众号简介 1.注册微信公众号 2.注册测试公众号 3.搭建微信本地调试环境 1)下载客户端natapp: 2)安装natapp: 4.微信公众 ...
- Python+Tornado开发微信公众号
本教程针对的是已掌握Python语言基本用法并且掌握其任一Web框架的用户. 本教程使用的Python版本为3.5.0, Web框架为Tornado, IDE开发工具为PyCharm,整个开发过程是在 ...
- java开发微信公众号:微信公众号对接
一.填写服务器配置信息的介绍 登录微信公众平台官网后,进入到公众平台后台管理页面. 选择 公众号基本设置->基本配置 ,点击"修改配置"按钮,填写服务器地址(URL).Tok ...
- python公众号教学_Python微信公众号后台开发教程
本篇文章开启Python开发微信公众号后台 准备: 云服务平台:(我用的是京东云的) 公众号:自己注册一个就行 Git:代码管理平台 了解平台 进入公众号后台,查看开发相关项 基本配置(服务器配置等) ...
最新文章
- 采用Huffman编码进行数据压缩
- 使用vs2015开发linux:Ubuntu程序
- 迁移学习简介(tranfer learning)
- 快手基于RocketMQ的在线消息系统建设实践
- java 读取txt文件指定行_在Java中读取txt文件中的特定行
- (1)散列表(哈希表)的定义
- 求两个数之间的水仙花数.c语言,求水仙花数(C语言/Java)
- Linux上Oracle自动启停方案
- opencv 头文件 包含 include 的问题
- 面试官:说说什么是 Java 内存模型(JMM)?
- Python获取实时的时间
- 日志管理工具 journalctl用法
- c语言 获取硬盘序列号,获取硬盘序列号的C++代码
- 金碟财务软找不到服务器怎么办,金蝶财务软件KIS标准版客户端连接不上服务器解决办法.pdf...
- 企业微信第三方服务商应用开发及上架教程
- 商务网站建设与维护【16】
- 【巴马火麻茶】调节三高、治疗失眠、排毒减肥,轻松get长寿的秘密!
- 2022年博士招生 | 华南理工大学-鹏城实验室 联培博士 专项计划
- 文墨绘学:教育培训微信营销方案
- java重启tomcat
热门文章
- PL/SQL连接Oracle出现的ORA-01034的解决办法
- Error (10029): Constant driver at beep_control.v(56)解决.Can't resolve multiple constant drivers
- 男人的收入、女人的年龄
- Linux /etc下用户和用户组配置文件详解
- android实现桌面icon未读信息图标(类似与iPhone的badge)
- 报错 | Templates should only be responsible for mapping the state to the UI. Avoid placing tags with s
- 2022级浙大MEM上岸学长的复试经验分享——知己知彼百战不殆
- TFTP协议分析与实现
- 斐波那契算法详解(logn)
- 蓝星星新浪微博客户端的开发记录