目录前话

Hi~ o(_ ̄▽ ̄_)ブ, 我偷偷回来了,你还在吗?

最近在搞公众号和小程序的开发,需要进行公众号和小程序的用户互通。网上搜、问人,都说需要公众平台绑定公众号和小程序,拿到unionId才能互通,但根据我自己的实践(瞎搞),发现无需unionId就能实现互通。

代码语言/框架: 小程序用的uniapp,后端java(Wxjava公众号框架)

前提条件公众号和小程序相互绑定(两个端的后台需要做对应的绑定操作)

技术思路

1.使用小程序web-view组件拉起公众号授权页面进行授权(静默授权,无需用户同意)

2.授权页跳转获取openId的页面(公众号后端页面,自己写的),获取到后作为url参数跳回小程序

3.跳回来小程序,可以从参数中获到该用户公众号openId了

4.小程序中通过授权接,获取该用户小程序的openId

5.都获取到了,你可以传回后端,进行绑定操作,用其中一个openId作为唯一key或者自定义唯一key都可以

解决方案步骤

1.新建一个web-view页面(小程序端)

使用web-view组件跳转公众号授权页面(所以需要相互绑定,否则无法打开)

2.用accessToken获取openId(公众号后端)

这里用的WxJava微信开放框架https://github.com/Wechat-Gro...

通过获取openid的页面传回来code,获取accessToken。 用accessToken获取openId@RequestMapping("/getOpenId")

public String getOpenId(@PathVariable String appid, @RequestParam String code, ModelMap map) {

String openId= "";

try {

WxOAuth2AccessToken accessToken = wxService.getOAuth2Service().getAccessToken(code);

openId = accessToken.getOpenId();

log.info("小程序网页授权公众号,获取openId:{}", openId);

} catch (WxErrorException e) {

e.printStackTrace();

}

return openId;

}

3.获取openId的页面(公众号后端)

这里单纯用了html和js,引入weixin的js,用于跳回小程序

//获取url上的参数

function getParameterByName(name, url) {

if(!url) url = window.location.href;

name = name.replace(/[\[\]]/g, "\\$&");

//匹配所有符合条件的,并取最后一个

var regex = new RegExp("[?&]" + name + "(=([^]*)|&|#|$)",'g');

var results = url.match(regex);

var tempResults= results!=null && results[results.length-1]!=undefined?results[results.length-1]:'';

var finalResults=regex.exec(tempResults);

if(!finalResults) return "";

if(!finalResults[2]) return '';

return decodeURIComponent(finalResults[2].replace(/\+/g, " "));

}

//获取openId

function getOpenId(){

var code = getParameterByName("code")

console.log("wx public code{}",code)

var httpRequest =new XMLHttpRequest();

var url = "https://你的公众号后端域名/wx/redirect/你的公众号appid/getOpenId?code="+code;

httpRequest.open('GET',url,true);name=test&nameone=testone"

httpRequest.send();

var res;

httpRequest.onreadystatechange =function () {

if (httpRequest.readyState == 4 && httpRequest.status == 200) {

var openId = httpRequest.responseText;

if(openId){

console.log("openId{}",openId)

//跳回小程序首页,把公众号的openId带过去

wx.miniProgram.redirectTo({url: "/pages/index/index?mpOpenid="+openId})

}else {

/**公众号授权方法*/

var uri = window.location.href;

window.location.href = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=你的公众号appid&redirect_uri="+获取openId的后端页面+"&response_type=code&scope=snsapi_base&state=123#wechat_redirect";

}

}

};

}

getOpenId();

4.小程序中获取跳转参数中openId(小程序端)

首页加载时获取openIdonLoad(e) {

if (e.mpOpenid) {

uni.setStorageSync('mpOpenid', e.mpOpenid)

//下面就是自己的小程序获取openid和传到后端存储了

}

}

需要注意的点

公众号后台小程序管理,关联小程序

网页授权跳转页(获取openId页面)的域名需要设置一下

设置IP白名单(获取openId页面服务器公网IP)

小程序正式环境需要https域名(ssl证书可以在华为云申请到免费的,测试环境可以用http)

后台关联设置,关联公众号

小程序公众号共服务器,公众号和小程序用户互通,无需unionid解决方案相关推荐

  1. 客户端/服务器程序_了解客户端/服务器协议和Web应用程序

    客户端/服务器程序 Introduction 介绍 HyperText Transfer Protocol or "HTTP" is the underpinning of int ...

  2. 小程序tabbar文字在服务器上不显示,小程序的tabbar不显示

    1. tabbar 不显示 刚开始给页面加tabbar时 { "pages":[ "pages/index/index", "pages/all/al ...

  3. 微信小程序获取步数没有服务器怎么解密,微信小程序获取步数权限,小程序权限检查...

    /** * 检查授权 */ checkWerunAuthorize:function(){ let that = this; wx.getSetting({ success(res) { if (!r ...

  4. 小程序不能加载服务器上缩略图,微信小程序 图片加载失败处理方法

    将页面打印成excel 在servlet中调用 try { File fileWrite = new File("D:/Write.xls"); fileWrite.createN ...

  5. 微信小程序上传图片到服务器总是失败_微信小程序怎么上传图片到服务器?

    微信小程序怎么上传图片到服务器?相信很多人都会把小程序图片保存到本地吧,但是把图片上传到服务器就不一定了,下面一起随小编看看微信小程序怎么上传图片到服务器吧. 微信小程序怎么上传图片到服务器? 首先, ...

  6. 华理c语言设计网上作业,华理c程序实验报告(共9篇).doc

    华理c程序实验报告(共9篇) 华理c程序实验报告(共9篇) 2011华理<C语言实验报告> C程序设计课程 实验报告册 所在学院 班 级 学 号 姓 名 任(来自:www.XIelw.Co ...

  7. 随笔:web服务器中建立一个小的个人站点

    1.侃侃而谈:在web服务器中,一般我们会使用http协议,http协议基于80端口,它属于明文协议,所以会带来安全隐患.所以当我们访问一些交易网站的时侯,会使用https协议,这是一个加密协议,它会 ...

  8. 小程序关联公众号后域名和服务器,公众号被封了,关联的小程序会怎么办?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 有赞的2017年注定是不平凡的一年,仅在三月份就风波不断,一直处在风口浪尖. 先是因"二清"被央行约谈,但据有赞一个商户透露,有赞创始 ...

  9. 小程序关联公众号推送公众号消息

    最近项目有个需求要把小程序和公众号关联到一起,发布商品,下单的时候的时候给用户推送消息 小程序要跟微信公众号(服务号认证300块,订阅号不行)绑定到一起,要先绑定到微信开放平台(需要认证300块) 绑 ...

最新文章

  1. MATLAB遍历子文件夹及其下文件
  2. 【Android工具】speedtest网速测试工具(4.1.5)安卓网速测试去广告高级版
  3. [armv9]-Introducing-Arm-Confidential-Compute-Architecture
  4. Mac系统的终端显示git当前分支
  5. 在 Asp.Net Core 中使用 worker services
  6. 玩转运维编排服务的权限:Assume Role+Pass Role
  7. Android 13 第一个开发者版本来了,网友直呼:Android 12 还没玩透!
  8. Stream anyMatch查找案例
  9. Java中高级面试题 -- 数十道题含答案
  10. 模糊综合评价-----层次分析法AHP
  11. 《duilib入门到精通》- duilib下载与编译(duilib视频教程)
  12. 【软考软件评测师】2016年下案例分析历年真题
  13. java 向量 内积_向量内积(点乘)和外积(叉乘)概念及几何意义
  14. [CF1504E]Travelling Salesman Problem
  15. 山东省计算机应用能力考核初级,山东省计算机应用能力考核.doc
  16. Win10开了hdr灰蒙蒙的怎么办?
  17. BS1022-基于React native+springboot开发服务端后台实现体育资讯类APP
  18. 技术人员帮助电商运营选择最合适的物流快递运输公司的5个切入点
  19. 苹果开发者账号续费不显示续费按钮的解决方法!
  20. 京东云加速扩展“朋友圈” 火力全开大展生态“云”图

热门文章

  1. 称重管理系统服务器不通,如何解决在无人值守称重管理系统的漏洞
  2. 网际快车 1.82.1001 Final_简体中文正式版 下载速度可以提高100%到500%
  3. 小波变换在地震信号降噪方面的应用
  4. 开发才1天,为什么测试需要2天
  5. linux修改时间命令
  6. 股票/转债数据获取工具
  7. 2022面试相关 - react相关原理
  8. 浅谈CGI程序与web间数据交互
  9. HPMSA2050直连服务器配置,惠普入门级存储MSA2050系列
  10. 一梦江湖服务器维护,一梦江湖手游3月1日维护更新公告 职业平衡调整测试