微信小程序通过web-view网页授权获取用户公众号OpenID

这篇具有很好参考价值的文章主要介绍了微信小程序通过web-view网页授权获取用户公众号OpenID。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.准备工作

第一步:
通过该地址 https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index
获取到微信公众号测试号AppID与appsecret (测试公众号可以测试使用,个人公众号不允许使用。微信认证服务号可以使用,微信认证订阅号不可以使用)。
接口权限查看链接:
https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Explanation_of_interface_privileges.html
测试公众号在生成测试公众号界面中按照提示微信关注即可。非测试不仅需要关注,还需要将微信公众平台中还需要将开发人员给设置一下才可以使用web-view。

同时需要修改一下网页授权接口
微信小程序通过web-view网页授权获取用户公众号OpenID

因为是测试,就修改成本地IPv4地址加你后端的端口号即可。注意不允许127.0.0.1。

微信小程序通过web-view网页授权获取用户公众号OpenID
以上是我的。正式环境下需要使用到域名,测试环境可以不需要。

第二步:
还需要弄一个微信小程序的测试号。拿到其中的AppID与appsecrt。注意:小程序的跟微信公众号的AppID不是同一个

第三步:
我这边后端使用的是WeiXin-JAVA开发包。具体可以通过链接访问
https://github.com/Wechat-Group/WxJava
也可以自己根据自己能力自行实现。

2.应用场景说明

其他应用场景不清楚,根据我个人实际情况(不使用unionID情况下可以使用当前方法)

3.实现步骤

第一步: 下载微信开发工具

第二步: 使用微信小程序的AppId创建一个微信小程序项目,然后官方提供的简单入门Demo,你可以使用也可以不使用。很简单的程序,一下就写好了,可以不用官方的。

第三步: 编写一个按钮,通过点击按钮实现去获取微信公众号OpenID

// index.wxml
<button bindtap="getGzhOpenId">获取公众号OpenId</button>

一个按钮一个点击事件。

点击事件中代码如下:

// index.js
getGzhOpenId(){
    wx.navigateTo({
      url: '/pages/test/test',
    })
  }

写过小程序的都知道,这就是一个页面跳转。但是这个跳转的不是正常页面,而是一个带有web-view的界面。

// test.wxml
<web-view src="{{src}}">
</web-view>

整个页面就两行代码,这等于是一个中转站,不需要被用户看到。src是可打开关联的公众号的文章,其它网页需登录小程序管理后台配置业务域名。

// test.js
onLoad(){
	let redirect_url = 'http://测试公众号网页授权的地址/后台接口地址/appid';   
   this.data.src = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=测试号AppID&redirect_uri=' + escape(redirect_url) + '&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect';
   this.setData({
    src: this.data.src
   })
}

以上是重点。重新梳理一下:
小程序加载进入index.wxml -> 点击按钮跳转到test.wxml -> 来到test.wxml会执行js中的渲染方法也就是onLoad(){} 渲染中我们就可以开始获取公众号OpenID了。

redirect_url: 回调地址

this.data.src: 也就是给web-view中的src赋值一个地址,web-view会去打开这个地址。打开后就会获取到code然后回调redirect_url地址并且携带微信公众号code(该code非小程序wx.login()的code)。

地址中参数可以参考官方文档:
https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html

需要特别注意的就是 scope 参数。他有两个值 一个是snsapi_base。另一个是 snsapi_userinfo。前者是获取openId。后者是获取OpenId以及用户信息,并且不需要关注公众号也可以获取到。WeiXin-Java-Demo中接口是获取userInfo,所以需要将scope更换一下,否则会报错。 如果只需要获取OpenId。看以下示例:

@RequestMapping({"/getOpenId"})
    public String getOpenId(@PathVariable String appid, @RequestParam String code, ModelMap map) {
        if (!this.wxService.switchover(appid)) {
            throw new IllegalArgumentException(String.format("未找到对应appid=[%s]的配置,请核实!", appid));
        } else {
            try {
                WxOAuth2AccessToken accessToken = this.wxService.getOAuth2Service().getAccessToken(code);
                map.addAttribute("openId",accessToken.getOpenId());
            } catch (WxErrorException var6) {
                var6.printStackTrace();
            }
            return "xxx";   
        }
    }

其实就是weixin工具包封装了其方法,Demo中没有使用而已,copy接口,粘贴修改一下即可。

到此就拿到了OpenId了,可以Debug调试,但是奇怪,我的小程序为啥还是白屏中啊。哈哈哈因为web-view界面就我得理解就是html中的ifrname嵌入式页面。

接下来也是重点
看后台接口上图,返回的是xxx。xxx代表一个页面,也就是xxx.html界面。我们需要通过springmvc将视图返回给小程序,小程序的web-view打开的就是你在后台写的界面。
那么 xxx.html中写什么呢? 继续往下看

xxx.html在小程序中被打开,然后你要展示东西吗?No!No!No! 不需要,不过如果你刚需我就不说啥了。

// xxx.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="http://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>
</HEAD>
<BODY>
</BODY>
<SCRIPT LANGUAGE="JavaScript">
    function back()
    {
        wx.miniProgram.redirectTo({url: "/pages/index/index?mpOpenid=${openId}"})
        //wx.miniProgram.postMessage({data:"${openId}"})
    }

    back();
</SCRIPT>
</HTML>

将xxx.html返回给小程序后加载该视图,视图执行back()方法。使用小程序中redirectTo返回到你想去的界面。该界面必须小程序中存在哦!然后一定一定要引入jweixin。否则无法在网页中使用小程序的方法。返回呢可以将微信公众号的openId带在url上返回到小程序的index界面。

onLoad(e){
console.log(e);
}

就可以获取到OpenID了,通过以上方式拿到后就可以与wx.login获取到的小程序OpenID进行对应起来。

以上方法呢还可以拓展很多种情况。例如小程序首次加载先看10s的注意公告。也可以在打开web-view页面携带上小程序OpenId,一口气在后端拿到公众号OpenID后持久化存储。就不需要再返回了。

结语

本人第一次编写CSDN,也是第一次使用markdown写,写得少,也没美化的眼光。重点还是解决了一个工作中的问题。以此作为记录,以防下次面试官问我项目中碰到的问题(解决了那还叫碰到的问题吗?)。同时该文章也希望大家遇到困难能够用得上,不懂可以在评论区中交流或者私信。因为第一次,所以也是自己查百度然后慢慢摸索折腾明白的。也看了其他类似的文章。从他们文章中找到的灵感并且,我也附带在下面,可以同时看,这样就会更快速的明白。

https://blog.csdn.net/qq_41929578/article/details/121748935
https://blog.csdn.net/daengwei/article/details/124535274
https://blog.csdn.net/qq_21492635/article/details/119491131文章来源地址https://www.toymoban.com/news/detail-475952.html

到了这里,关于微信小程序通过web-view网页授权获取用户公众号OpenID的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序web-view嵌入uni-app H5页面,通过H5页面跳转企业微信客户聊天窗口如何操作?

    1)找到企业ID,登录 企业微信 企业微信 https://work.weixin.qq.com/wework_admin/loginpage_wx  2)找到接入链接  功能-客服-微信客服 微信公众平台,给个人、企业和组织提供业务服务与用户管理能力的全新服务平台。 https://mp.weixin.qq.com/

    2024年02月11日
    浏览(45)
  • 微信小程序web-view跳转

    h5项目中跳转外部连接可使用的web-view标签解决 官网连接:web-view | 微信开放文档 1.添加事件 2.新页面中的跳转链接(一行即可,默认会会自动铺满整个小程序页面) src就是路径,写需要跳转的网页地址即可! 3.配置路由,app.jason中 4.小程序后台配置域名 开发管理=开发设置=业务域名中

    2024年02月11日
    浏览(54)
  • 微信小程序如何使用web-view

           有时我们的业务需求是小程序内部跳转到其他h5项目的页面,这是我们就会用到web-view标签,这个标签可以帮助我们完成h5页面的渲染。下面,就是使用方法: 第一步: 首先现在小程序建一个新的page用来使用web-view  在wxml文件中写入web-view标签,src属性为你要跳转h5线

    2024年02月14日
    浏览(40)
  • uniapp微信小程序嵌入页面web-view配置

    uniapp开发微信小程序的时候, 有时候需要嵌入H5页面 可以使用小程序自带的  web-view  组件相当于 HTML页面中的 iframe  1.配置业务域名 开发管理 ---开发设置 ---业务域名   然后去配置你的业务域名就可以了   2.页面中使用 web-view 使用起来还是很方便的 uniapp提供属性可以具体

    2024年02月11日
    浏览(47)
  • 微信小程序组件、web-view、h5之间交互

    目录结构 小程序 /pages/index/index.wxml /pages/index/index.js /pages/index/index.json 组件 /component/index-page/index.wxml /component/index-page/index.js /component/index-page/index.json web-view /pages/web/web.wxml /pages/web/web.js h5

    2023年04月16日
    浏览(55)
  • 微信小程序在web-view页面增加一个按钮

    需求: 在微信小程序中通过web-view打开H5页面,需要小程序端在页面中增加一个可以请求接口的按钮 实现方法 通过在web-view中嵌套cover-view标签来实现( 注意: cover-view只支持嵌套 cover-view、cover-image,可在 cover-view 中使用 button,但是本人在里面使用button标签时,对button添加样式无效

    2024年02月07日
    浏览(56)
  • 微信小程序实现支付宝支付——web-view实现

    由于使用到的微信小程序需要实现支付功能,而微信支付的申请手续较为繁琐,所以使用了支付宝支付,但是微信小程序正常情况不支持支付宝支付,所以我使用了web-view内嵌了支付宝的h5支付。 不会使用支付宝沙箱支付的同学可以看这篇文章Springboot支付宝沙箱支付 代码如下

    2024年02月11日
    浏览(42)
  • 微信小程序web-view嵌入uni-app H5页面,通过H5页面传参给小程序进行转发分享页面,并通过点击转发出来的卡片,定向打开对应H5路径

    index.wxml  index.js 在H5项目的App.vue页面获取参数实现自动跳转到对应页面,包括携带的参数值

    2024年02月12日
    浏览(39)
  • 微信小程序跳转公众号文章 web-view方式

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 提示:这里可以添加本文要记录的大概内容: 小程序和公众号都必须时企业认证的 1.在小程序里面关联相关的公众号 2.在公众号里面关联相关的小程序 提示:以下是本篇文章正文内容,下面案例可供参

    2024年02月09日
    浏览(57)
  • 关于微信小程序<web-view>组件跳转报错问题-解决!

    报错以上的问题 尝试了好久--发现的问题-官网上文章看完了也没有看到   当点击 itemClick1 的时候 就报以上的 错误 当点击 itemClick2 的时候就能成功 跳转 原因是:  itemClick1和当前跳转的位置是同级,应该是web-view组件不能跳转到同级以外的地方! 总结:  所有想要使用 web-view 组

    2024年02月16日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包