在react页面内嵌“微信二维码”,实现PC端通过微信扫码进行登录。首先去微信开放平台注册一个账号,创建一个网站应用,提交网站备案审核,获取appid和appsecret;其他开发流程根据微信文档来进行操作。

react页面部分代码,引入内嵌二维码脚本,设置iframe标签支持跨域,自定义二维码样式:

componentWillMount(){//引入“微信内嵌二维码”脚本var script = document.createElement('script');script.type= 'text/javascript';script.async= false;script.src= 'https://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js';document.head.appendChild(script);}componentDidMount(){/*** ... other code**///加载微信二维码setTimeout(function() {/*** 微信内嵌二维码自定义样式有两种方式实现* 第一种是把自定义样式写在一个css文件里面,部署到一个https链接上* 第二种是把自定义样式通过base64加密后设置在href上**/var customeStyle = "data:text/css;base64,Lnd4X3FyY29kZSBpZnJhbWUgeyB3aWR0aDogMTYwcHg7IGhlaWdodDogMTYwcHg7IG1hcmdpbjogMDsgcGFkZGluZzogMDsgfQ0KLmxvZ2luUGFuZWwgeyBtYXJnaW46MDsgcGFkZGluZzogMDsgfQ0KLmxvZ2luUGFuZWwgLnRpdGxlLCAubG9naW5QYW5lbCAuaW5mbyB7IGRpc3BsYXk6IG5vbmU7IH0NCi5pbXBvd2VyQm94IC5xcmNvZGUgeyBtYXJnaW46IDA7IHdpZHRoOiAxNjBweDsgYm9yZGVyOiBub25lOyB9";newWxLogin({self_redirect:false,id:"wx_login_container",appid:"wx0*************", //微信开放平台网站应用appidscope: "snsapi_login",redirect_uri: encodeURI(location.origin),//设置扫码成功后回调页面state: "" + (newDate()).getTime(),style:"black",href: customeStyle,//location.origin + "/css/wx_qrcode.css", //自定义微信二维码样式文件
});//设置iframe标签可以进行跨域跳转var qrcodeBox = document.getElementById("wx_login_container");var iframes = qrcodeBox.getElementsByTagName("iframe");if(iframes.length){var ifr = iframe[0];ifr.setAttribute("sandbox", "allow-scripts allow-top-navigation allow-same-origin");}},1000)}

View Code

因为默认内嵌二维码的尺寸固定,有头部标题,还是底部提示文字,所以如果想修改二维码尺寸和隐藏标题和提示文字,需要自定义样式来控制。微信接口也提供了一个href属性来进行自定义样式。

自定义样式有两种方式:

* 第一种是把自定义样式写在一个css文件里面,部署到一个https链接上* 第二种是把自定义样式通过base64加密后设置在href上

相对而言,第二种方式更方便。

最后效果图

另外,如果有要求对于同一个微信用户,不管他是在PC端扫码登录,还是在微信网页授权登录,必须识别成同一个用户,则需要把微信开放平台和微信公众平台账号关联起来。

对于微信授权登录的用户,微信提供的唯一标识符就是unionId, 对于这个需求,在公众平台文档上有提到:

转载于:https://www.cnblogs.com/tandaxia/p/11368789.html

react页面内嵌微信二维码 和 自定义样式 以及 微信网页共用unionId问题相关推荐

  1. 如何给CSDN博客添加个人微信二维码或自定义栏目

    在使用CSDN的过程中,一般人都不怎么会去关注私信或留言的,因此为了更加有效及时地与作者或网友进行沟通,可以将自己的邮箱地址或者微信二维码添加到自定义栏目中,现在新版的CSDN好像只能添加一个自定义栏 ...

  2. python制作微信二维码_Python提取支付宝和微信支付二维码的示例代码

    支付宝或者微信支付导出的收款二维码,除了二维码部分,还有很大一块背景图案,例如下面就是微信支付的收款二维码: 有时候我们仅仅只想要图片中间的方形二维码部分,为了提取出中间部分,我们可以使用图片处理软件 ...

  3. 调用网易云二维码登录API,实现微信小程序登录

    调用网易云二维码登录API,实现微信小程序登录 首先前往网易云音乐API官网 binaryify.github.io/NeteaseClou- 首先根据文档的链接下载好配置文件,再根据官方文档启动好本 ...

  4. 小程序获取企业微信二维码,使用联系我插件配置企业微信二维码

    通过配置获取企业微信二维码总共分为五步: 第一步:登录企业微信管理后台,查询企业微信的企业ID(corpid)和Secret(corpsecret); 第二步:获取access_token: 第三步: ...

  5. 如何生成微信二维码?生成方法其实非常简单

    如何生成微信二维码呢?生成微信二维码可以方便地分享微信号或公众号,让其他人可以快速添加你为好友或关注你的公众号.在商业领域中,可以将微信二维码作为营销手段,例如在文章中加入二维码,引导用户进入官方微信 ...

  6. 【Python实战】用Python制作动态微信二维码qrcode

    Python完整代码 # https://github.com/sylnsfar/qrcode#common-qr-code from MyQR import myqr import osversio ...

  7. Java如何解析个人或他人微信二维码内的信息

    这两天对微信二维码比较感兴趣,所以就花了点时间学习了一下,下面我将先介绍一下如何解析微信二维码内的信息. 直接上代码: import java.awt.image.BufferedImage; imp ...

  8. 【微信小程序-原生开发】实用教程20 - 生成海报(实战范例为生成活动海报,内含生成指定页面的小程序二维码,保存图片到手机,canvas 系列教程)

    可在系列教程的基础上继续开发,也可以单独使用 [微信小程序-原生开发]系列教程 效果预览 代码实现 点击触发生成海报 在活动详情页,指定点击某图标/按钮,触发跳转到生成海报的页面 pages\comp ...

  9. Java如何获取微信二维码内的信息

    import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.i ...

  10. 页面悬浮微信二维码代码

    <style type="text/css"> #floatTips{font-weight:bold;position:absolute;right:20px;/*调 ...

最新文章

  1. 沈向洋:读论文的三个层次
  2. 卡尔曼滤波的原理说明
  3. 【KVM系列03】KVM的I/O 全虚拟化和准虚拟化
  4. CF613D Kingdom and its Cities
  5. run在java_Java语言start和run方法的区别
  6. 正则匹配 表情,表情
  7. 从汇编的眼光看C++(之delete内存泄露)
  8. Properties工具类
  9. 01-NLP-02-gensim中文处理案例
  10. 如何避免学习linux必然会遇到的几个问题
  11. Ps 初学者教程,如何在产品照片中改变对象颜色?
  12. web前端开发技术实验与实践(第三版)储久良编著 项目11
  13. 1118 Birds in Forest (25分)
  14. 程序员才看得明白的面试圣经
  15. int、Integer、new Integer和Integer.valueOf()的 ==、equals比较
  16. [macOS]_[初级]_[关于程序签名时出现User interaction is not allowed的问题]
  17. 上海汽车二级销售商网址
  18. windows10 强制关闭全屏游戏卡死的方法
  19. 11 Tornado - 使用模板
  20. 【干货收藏】统计分析/机器学习吐血整理最强指南

热门文章

  1. Foundation 框架 NSArray、NSMutableArray排序
  2. POJ 1755 Triathlon(半平面交)
  3. 马云怒赞的93年网红区块链工程师,教你如何用3年时间实现逆袭
  4. Git 多平台换行符问题(LF or CRLF)
  5. android之monkey测试
  6. java 虚拟机--新生代与老年代GC [转]
  7. ECMAScript基础语法
  8. 谜题35:一分钟又一分钟
  9. 处理整个磁盘镜像文件的单个分区
  10. 【Python】闭包Closure