Unity发布PC平台,接入微信开放平台网页应用,扫码登录不拉起浏览器直接显示二维码在UI上
文章目录
- 一、前言
- 二、登录微信开放平台,申请网页应用
- 三、抓取授权二维码原理
- 四、测试
- 五、核心代码
- 六、补充:如何知道用户扫码成功
一、前言
Unity
发布PC
平台,如果在PC
平台想要使用微信登录,需要在微信开放平台申请网页应用,然后使用浏览器访问登录页,获取到二维码,通过手机扫码登录。
这里就涉及到一个问题:浏览器。
方案一:自己做一个迷你浏览器(可以参见我这篇文章:https://blog.csdn.net/linxinfa/article/details/109030199);
方案二:直接通过UnityWebRequest
访问页面并解析出二维码链接,通过RawImage
直接显示在UI
上。
本篇文章我介绍方案二的做法。
二、登录微信开放平台,申请网页应用
首先,你需要先在微信开放平台申请网页应用,这样才能有对应的应用参数,用于调用API
三、抓取授权二维码原理
根据官方文旦,构造授权链接
https://open.weixin.qq.com/connect/qrconnect?appid=wxbdc5610cc59c1631&redirect_uri=https%3A%2F%2Fpassport.yhd.com%2Fwechat%2Fcallback.do&response_type=code&scope=snsapi_login&state=3d6be0a4035d839573b04816624a415e#wechat_redirect
其中各个参数根据你申请的应用参数而定。
执行https
请求,可以抓取到网页源码,解析出wrp_code
节点的src
的值,比如这里是:
/connect/qrcode/021XYI6c566IXqbR
然后,就可以构造出二维码的url
了,就是前面拼接上域名https://open.weixin.qq.com/
,即
https://open.weixin.qq.com/connect/qrcode/021XYI6c566IXqbR
然后在Unity
中,我们就可用通过UnityWebRequest
类加载出二维码的Texture
了,直接在UI
上显示出来。
四、测试
五、核心代码
using System;
using System.Collections;
using UnityEngine;
using UnityEngine.Networking;
using System.Text.RegularExpressions;
using UnityEngine.UI;public class Main : MonoBehaviour
{public RawImage qrcodeImg;void Start(){StartCoroutine(SendRequest());}/// <summary>/// 开启一个协程,发送请求/// </summary>/// <returns></returns>IEnumerator SendRequest(){string url = @"https://open.weixin.qq.com/connect/qrconnect?appid=wxbdc5610cc59c1631&redirect_uri=https%3A%2F%2Fpassport.yhd.com%2Fwechat%2Fcallback.do&response_type=code&scope=snsapi_login&state=3d6be0a4035d839573b04816624a415e#wechat_redirect";UnityWebRequest uwr = UnityWebRequest.Get(url);yield return uwr.SendWebRequest(); if (uwr.isHttpError || uwr.isNetworkError) {Debug.Log(uwr.error); }else {string htmlStr = uwr.downloadHandler.text;//Debug.Log(htmlStr);//使用正则表达式匹配搜索qrcode图片string pattern = "img class=\"qrcode lightBorder\" src=\"(\\S*)\"";Regex rgx = new Regex(pattern);Match m = rgx.Match(htmlStr);if(null != m){//二维码的链接string qrcodeUrl = "https://open.weixin.qq.com" + m.Groups[1].Value;//获取二维码图片UnityWebRequest qrcodeUwr = UnityWebRequest.Get(qrcodeUrl);yield return qrcodeUwr.SendWebRequest();if (qrcodeUwr.isHttpError || qrcodeUwr.isNetworkError){Debug.Log(qrcodeUwr.error);}else{//二维码的二进制流var qrcodeBytes = qrcodeUwr.downloadHandler.data;//转换成Texture,给RawImage显示Texture2D tex2D = new Texture2D(256, 256);tex2D.LoadImage(qrcodeBytes);qrcodeImg.texture = tex2D;}}}}
}
六、补充:如何知道用户扫码成功
答:上面访问登录页的https
链接:https://open.weixin.qq.com/connect/qrconnect
,会带一个redirect_uri
参数,用户允许授权后,将会重定向到redirect_uri
的网址上,并且带上code
和state
参数,若用户禁止授权,则重定向后不会带上code
参数,仅会带上state
参数。
游戏开发者需自行部署一个web
服务器,并提供访问链接作为redirect_uri
,当redirect_uri
被访问时,web
服务器通知游戏服务器,游戏服务端再通过通信协议告知游戏客户端扫码结果。
注意,游戏服务端怎么知道这个回调应该通知哪个客户端呢?就是通过state
来判断的,最开始游戏客户端应该先请求游戏服务端,让游戏服务端生成一个state
,然后游戏客户端再去访问登录页链接https://open.weixin.qq.com/connect/qrconnect
,这样回调redirect_uri
时,游戏服务端就可以通过这个state
知道是哪个游戏客户端发起的扫码授权了。
Unity发布PC平台,接入微信开放平台网页应用,扫码登录不拉起浏览器直接显示二维码在UI上相关推荐
- Android应用接入微信开放平台
接入微信开放平台基本步骤 注册微信开发者账号 创建应用,获得AppID和AppSecret 填写应用信息,如包名和应用签名 下载范例代码 注意事项 要确保填写在微信开放平台的应用信息中AppID+包名 ...
- 微信公众平台与微信开放平台的区别、服务号、订阅号、企业微信的区别
微信公众平台 vs 微信开放平台 微信公众平台是介绍公众号相关的内容,比如服务号.订阅号.企业微信,所以叫微信公众平台:公众平台也是公众号的管理端,可以编辑推送文章,通常是公众号的运营.开发登录: 微 ...
- 微信内置浏览器动态生成二维码并长按识别
现如今围绕微信生态相关开发已经非常常见,本期带来如何通过 qrcode.js 实现微信内置浏览器动态生成二维码并能够长按识别 以及 通过 html2canvas 生成图片并长按保存 说几个知识点 微信 ...
- Jenkins配置自动打包app发布蒲公英显示二维码
Jenkins配置自动打包app发布蒲公英显示二维码 搞了一周,终于弄好了,下面就是见证奇迹的时刻. 1.下载Jenkins,去官网点这里选择Windows版本: 2.下载完是个zip解压 安装 一路 ...
- 手把手教你接入微信开放平台,实现网站拉起微信账号登录,从0开始详细记录
一点自述: [ 劝退篇:个人还是算了吧,看看流程就成,因为微信不给个人开放,可参考其中原因,下面都有截图 ] 我也是参考各种文章,避过.爬过各种坑才慢慢走过来. 首先,很多人找不到微信开放平台(即网 ...
- 成为腾讯开发者——如何使用QQ开放平台和微信开放平台
最近的项目有这样一个需求,需要分享链接到QQ和微信中,这样iOS中应该怎样实现呢.方法也许有很多,但是我选择的是使用第三方API来实现这个功能--ShareSDK.这就需要我们先去申请成为QQ开发者和 ...
- 无广告托管应用,免费的应用分发平台,提供下载次数等数据统计,Android、ios应用合并,一个二维码搞定
前言 省去自建服务器的麻烦,并且提供了下载次数等数据统计,可以随时查看历史版本,一个二维码搞定Android和ios,扫码时可根据机型自动识别,给开发者提供很大便利,不仅免费而且操作非常的简单. 1. ...
- 微信扫码支付功能(1)---通过谷歌二维码工具生成付款码
生成付款二维码 一.微信网站扫码支付介绍 1.扫码支付文档 微信开发官方文档:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_5 ...
- 微信扫描二维码跳转到小程序配置 获取二维码内容
小程序开发 -> 开发管理 -> 开发设置 -> 扫普通链接二维码打开小程序 添加跳转规则,可配置项如下图 协议类型和选择大小写没啥好说的,前缀占用规则选择占用重点讲以下几条 二维码 ...
最新文章
- Java Day02-1
- 在ubuntu 11.10 64位 上安装adobe flash player
- C# 去重处理字符大小写
- springcloud 整合 gateway_从Spring Cloud到Kubernetes的微服务迁移实践
- UDK编辑器 49条小提示(转)
- 40.leetcode17_letter_combinations_of_a_phone_number
- 判断客户端是否安装FlashPlayer及版本
- 51单片机带闹钟c语言程序,51单片机定时闹钟程序(带按键)
- 开关量模块——一对多无线传输
- 在MAC上如何隐藏文件夹以及查看隐藏文件
- 深入理解 Java 中的转义符: \u000a\u0022
- 蓝桥杯0027 通信密码
- 电路分析第二章 二端口网络
- 佳能R3、佳能R5和佳能R6的区别
- 如何在Outlook 2019/Office 365中运行VBA脚本邮件规则
- gdal加入ecw支持(暂未解决)
- 极速实时荧光定量PCR仪助力科研检测
- 二维数组模拟酒店订房系统
- 小蜜蜂采集器 怎么用
- Excel之复制除了某几行之外的所有行(非专业人士,自用的土方法)