1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 另劈捷径实现微信小程序与公众号的OpenID建立关联

另劈捷径实现微信小程序与公众号的OpenID建立关联

时间:2021-08-20 15:51:52

相关推荐

另劈捷径实现微信小程序与公众号的OpenID建立关联

实现多个小程序和公众号的用户关联

1、微信公众平台官方文档2、准备工作3、应用场景说明4、实现步骤a、获取微信小程序openId (用户唯一标识)b、借助web-view获取到用户公众号的OpenIDc、在redirect_ur后端API服务中获取gzhOpenID 4、进坑容易出坑也 so easy5、开启你的互动应用场景

1、微信公众平台官方文档

为了识别用户,每个用户针对每个公众号会产生一个安全的OpenID,如果需要在多公众号、移动应用之间做用户共通,则需前往微信开放平台,将这些公众号和应用绑定到一个开放平台账号下,绑定后,一个用户虽然对多个公众号和应用有多个不同的在这里插入代码片OpenID,但他对所有这些同一开放平台账号下的公众号和应用,只有一个UnionID,可以在用户管理-获取用户基本信息(UnionID机制)文档了解详情。

如果你已是按照微信官方文档实现, 恭喜你, 不用再往下看了,我们不折腾。

上面描述得非常清楚, 每个微信用户进入公众号和小程序都会分别产生不同的OpenID, 如想获得用户唯一标识UnionID, 则必须同时绑定到同一个开放平台账号下

本文就是为差300元去开放平台认证的码友

2、准备工作

必须得别拥微信小程序和公众号的AppID和AppSecret具备简单的微信小程序和后端开发能力

3、应用场景说明

当你拥有一个创意点子, 半柱香的时间开发了一个逆天微信小程序。

但痛苦的事也随之而来,小程序是用完即走,根本沉淀不了用户, 这时就该公众号登场了,公众号与小程序相辅相成在于,公众号能为小程序留存粉丝并与粉丝互动,引导粉丝进入小程序,实现公众号的变现。同时,小程序配合公众号,也能大大的提升用户黏性,增加复购。

这里给各位看官介绍一种轻松实现两个OpenID建立关联的方法,用户只需进入一次小程序即可建立关联,接着往下看

4、实现步骤

上硬菜了

a、获取微信小程序openId (用户唯一标识)

获取用户code:

wx.login({success: res => {// res.code 得到微信小程序用户一次性codewx.request({url:'https://api./sns/jscode2session?appid=' + appId + '&secret=' + secret + '&js_code=' + res.code + '&grant_type=authorization_code',data: {},header: {'content-type': 'json'},success: function (u) {var openid = u.data.openid //返回openid}})}})

:以上代码为一个非常不规范的示例, 仅为了演示实现思路和步骤。(你在开发时, 请千万不要直接在小程序中留下你的 appid和secret, 必须通过后端服务器中转)

b、借助web-view获取到用户公众号的OpenID

在前一步骤中获取到了wxOpenID, 这时先不着急让用户进入小程序主页面。 可再通过一个后端服务查询当前wxOpenID是否与gzhOpendID建立关联, 如果没有则, 可以将用户跳转到你准备好的web-view页面这个坑里, 逻辑代码如下:

// 检查是否已建立 wxOpenID与gzhOpendID关系

wx.request({url: 'http://XXXX',//后台URL 略success(res) {if(!res.data.exist){//如果不存在则直接跳走wx.navigateTo({url: '/pages/home/webview?wxid=wxOpenid'})}}});

// 空壳啥也没干的 web-view “/pages/home/webview”

wxml:

<web-view id="viewopen" src="{{src}}" bindload="onbindLoad"></web-view>

JS

Page({data: {src: ""},onLoad: function (options) {//let redirect_url = 'https//XXX/api_XXX?wxopenid=' + options.wxid; this.data.src = 'https://open./connect/oauth2/authorize?appid=公众号的appid&redirect_uri=' + eascape(redircturl) + '&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect';this.setData({src: this.data.src})}})

c、在redirect_ur后端API服务中获取gzhOpenID

以上URL为获取公众号用户的Code, 获取成功后会跳转到你指定的返回URL中, 这时你就可以在你的“https//XXX/api_XXX”中拿到用户的code, 因为已将用户的wxOpenID做为参数传递到了你的后台API页面, 这时只需要通过 刚拿到的公众号code换取用户的gzhOpendID即可, 最后就是提醒你, 直接将得来不易的两个关系保存到你的数据表中, 以供下次使用。

获取公众号的OpenID接口URL:string.Format(“https://api./sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code”, gzh_appid, gzh_secret, code)

4、进坑容易出坑也 so easy

这一步很关键, 用户掉进坑不出来, 那么你这小程序也算白折腾了。

在第二步B中留的后端URL如果只干了, 获取gzhOpenID也太对不起它超高的颜值了。 微信平台都喜欢给我们留一个redirect_url, 这里我们也给 ‘https//XXX/api_XXX’ 留一个返回URL, 加上第二步的URL则拼接完整后’https//XXX/api_XXX?wxopenid=XXXX&returnurl=https://XXX/newurl.html’,你没看错, 就是html。 这时估计就明白我的用心良苦了。

在第三步获取到用户的gzhOpendID,建立关系后, 通过重定向地址(Response.Redirect(url)),将以上不起眼的newurl.html返回给web-view,这时才总算发辉它的价值了, 转载html并执行

我们打开newurl.html神秘面纱, 发现也不过如此:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD><TITLE> New Document </TITLE><META NAME="Generator" CONTENT="EditPlus"><META NAME="Author" CONTENT=""><META NAME="Keywords" CONTENT=""><META NAME="Description" CONTENT=""><script src="https://res./open/js/jweixin-1.3.2.js"></script></HEAD><BODY></BODY><SCRIPT LANGUAGE="JavaScript"><!--function fan(){wx.miniProgram.navigateBack({delta: 0,})}//--></SCRIPT></HTML>

看到没也真的是空空如也, 就告诉了web-view怎么掉坑的就怎么出坑(返回一上页), 是不是真 so easy 请在评论区你说了算

5、开启你的互动应用场景

各位码友们应用场景交给你们的留言

— 欢迎拍砖 —

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。