前言 网页授权官方文档 2. 公众号 appid redirect_uri: 用户同意授权后的回调地址 scope:授权作用域,可取值:snsapi_base、snsapi_userinfo snsapi_base 不弹出授权页面, code=CODE&state=STATE 在 tp6.0 中的使用示例 public function index() { // 公众号appid $appid = 'wx0a48233ca8de759e 权限 可能的原因如下: 1、 使用的是个人订阅号,订阅号没有权限使用网页授权 2、使用的服务号,没有认证或认证已过期 三、redirect_uri 参数错误 授权回调页面域名配置错误,登陆公众号平台, 在 “设置与开发-公众号设置-功能设置-网页授权域名” 中检查域名配置是否正确
) 1、设置网页授权回调域名: 在微信公众号请求用户网页授权之前,开发者需要先到公众平台官网中的“开发 - 接口权限 - 网页服务 - 网页帐号 - 网页授权获取用户基本信息”的配置选项中,修改授权回调域名 ,由第三方代替公众号实现网页授权即可 2、用户同意授权获取code: 在确保微信公众账号拥有授权作用域(scope参数)的权限的前提下(服务号获得高级接口后,默认拥有scope参数中的snsapi_base 公众号可通过下述接口来获取网页授权access_token。 ,用户访问公众号的网页,也会产生一个用户和公众号唯一的OpenID scope 用户授权的作用域,使用逗号(,)分隔 关于网页授权access_token和普通access_token的区别: 微信网页授权是通过 OAuth2.0机制实现的,在用户授权给公众号后,公众号可以获取到一个网页授权特有的接口调用凭证(网页授权access_token),通过网页授权access_token可以进行授权后接口调用,如获取用户基本信息
本节讲解一下微信公众号开发之-微信网页授权,此开发主要是针对于在微信公众号内打开链接,请求获取用户登录信息。在此之前开发者需要做token验证、有网页授权登录权限。 一、原理 用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑。 二、过程 具体而言,网页授权流程分为四步: 1、引导用户进入授权页面同意授权,获取code 2、通过code换取网页授权access_token(与基础支持中的access_token不同) 3、如果需要 ,开发者可以刷新网页授权access_token,避免过期 4、通过网页授权access_token和openid获取用户基本信息(支持UnionID机制) ? 三、代码 1、引导进入授权页面 /** * 网页授权 */ public function webInfo() { //获取code $appId = $this->appId
公众号后台->开发->接口权限->网页服务->网页授权 公众号后台->开发->基本配置 开发者工具相关 公众号后台->开发->开发者工具->web开发者工具(绑定开发者微信号)
微信公众号网页授权登录: 前段时间做了一个微信公众号的项目,就是微信公众号的菜单点击我的个人中心,就向用户授权登录 获取用户的信息,进行业务逻辑的操作,微信公众号官方文档,这是我写的文章,里面有很多微信的官方 点击微信网页授权,这里大家一定要仔细的去观看文档中的关于网页授权回调域名的说明 关于网页授权的两种scope的区别说明,关于网页授权access_token和普通access_token的区别 关于特殊场景下的静默授权,这里有些是需要在微信公众平台后台去配置路径,一定要仔细的去看文档, 还有就是微信公众号的页面放的路径,大家一定要去仔细的观看文档,不然会出现微信公众号,找不到页面 注意,这个接口是跳转到是我们Controller层的业务接口出来最好是在线上去开发,测试这个功能,下面是Mvc的接口: WXLoginController.java: /** * 微信公众号网页授权登录 code信息---------:"+code); //第二步:通过code换取网页授权access_token (获取openid接口) //WXAuthUtil.APPID 公众号的Appid
1.检查appid和secret是否正确(基本不会错,纠结了一晚上居然认为是这里错了) 2.发了两次请求导致错了 在url中加入”connect_redirect=1″;
最近一个项目是在微信公众号内二次开发,涉及到微信公众号支付,根据文档要求想要支付就必须要获取到用户的openid。 这是微信官方文档https://mp.weixin.qq.com/wiki? t=resource/res_main&id=mp1421140842 官方流程 网页授权流程分为四步: 1、引导用户进入授权页面同意授权,获取code 2、通过code换取网页授权access_token (与基础支持中的access_token不同) 3、如果需要,开发者可以刷新网页授权access_token,避免过期 4、通过网页授权access_token和openid获取用户基本信息(支持UnionID 机制) 我的思路 1、首先是要在公众号后台进行配置,设置回调路径,具体要求参照官方文档。 这是非静默方式授权 ? 静默方式直接就获取到了openid ? 3、在1中配置的回调方法中根据获取到的code和state再去请求如下接口,获取access_token 和openid。
踩坑场景:登录公众号后台,在"设置"里翻了个底朝天,就是找不到"网页授权域名"这几个字。 破坑方法:记住这个路径,别再找了:【公众号后台】->左侧菜单【设置与开发】->【开发接口管理】->【接口权限】->【网页服务】->【网页授权】右侧的修改为什么藏这么深? 服务号需要微信认证通过后,才会在js安全域名下出现网页授权域名。三、第二坑:验证文件上传失败在后台配置域名,点击"保存"后,微信提示"验证文件无法访问"或"验证失败"。 确认公众号类型:只有认证过的服务号才有网页授权权限!订阅号、未认证的服务号,统统不行。去"账号详情"里确认你的类型和认证状态。 3.State参数防CSRF构造授权URL时,务必带上一个随机的state参数,并在回调时校验其一致性。这能有效防止CSRF攻击。七、检查清单当你卡住时,按这个清单逐项核对:公众号是已认证的服务号吗?
最近在做PC二维码扫码登录的功能,总结了一些问题 主要区别 二者的主要区别: 差异 PC网页扫码登录 公众号网页授权登录 账号要求 需要开放平台账号创建网站应用 一个认证过的服务号就可以(也可以使用公众号的测试号 ) 授权方式 在页面打开公众号二维码之后授权 公众号内打开授权链接(不关注公众号也可以) 授权环境 PC浏览器网页 微信客户端 测试号 无 有(可以申请使用测试账号) 两者的授权流程一样,需要授权获取 code换取token和openid再去请求用户信息 PC端扫码还有一种方式(本质上还是网页授权的方式) PC端扫的二维码地址是移动端的网页,手机扫码后打开的是网页授权链接,通过网页授权的方式获取code 拿到用户openid或者unionid,PC端通过轮询方式获取用户id进行登录 授权原理 授权原理简述: 用户通过手机微信确认登录之后,微信方会返回一个授权码code给回第三方(接入方),这个授权码 参考资料 微信公众平台测试帐号申请地址 微信公众号网页授权 微信开放平台网站应用微信登录开发指南
在做微信二次开发的时候,调用网站授权接口会遇到 {‘errcode’:40029,‘errmsg’:‘invalid code, hints: [ req_id: 0407ns44 ]’}这样的错误。 百度了一下,原来302是一种不稳定的跳转,可能产生网页劫持,微信应该就是因为这个所以做了两次请求。 如果302定向会出问题,那么用301永久定向就没问题了吧?果然用301定向问题解决。
微信公众号的网页开发基本和H5移动端开发一致,主要是涉及到网页授权获取用户信息和使用js-sdk获取微信原生能力支持。 t=sandbox/login 用自己微信扫码登录,然后扫码关注当前测试号,这里注意js接口安全域名和网页授权回调域名,需要配置为当前项目地址。使用测试号时用ip即可,但是线上必须是域名。 网页授权 类似把系统自己的登录体系移除,通过微信授权方式获取微信用户信息。在测试号里配置域名时,不需要带协议头和后缀。 注意: 1、在微信公众号请求用户网页授权之前,开发者需要先到公众平台官网中的“开发 – 接口权限 – 网页服务 – 网页帐号 – 网页授权获取用户基本信息”的配置选项中,修改授权回调域名。 appId: '', // 必填,公众号的唯一标识 timestamp: , // 必填,生成签名的时间戳 nonceStr: '', // 必填,生成签名的随机串 signature: '
微信公众号网页授权中转功能 解决网页授权域名个数限制 通过已授权的域名进行中转 thinkphp8代码 route下 // 微信公众号授权中转 Route::get('connect/oauth2/authorize ', 'WechatOfficial/GetConnectOauth2Authorize'); // 通过code换取网页授权access_token Route::get('sns/oauth2/access_token redirect_uri=' . urlencode($redirect_uri)); // 构建微信授权URL $wechatUrl = "https://open.weixin.qq.com middleRedirect}&response_type=code&scope={$scope}&connect_redirect=1#wechat_redirect"; // 重定向到微信授权页面
准备工作 注册公众号,登陆后台,在开发-基本配置找到 AppID,AppSecret,配置IP白名单 ,绑定开放平台账号 公众号授权 拉起授权,获取code 传参: { redirect_uri:' token){ window.location.href = url } 用户同意授权后 如果用户同意授权,页面将跳转至 redirect_uri/? 通过code换取网页授权access_token 次请求,必须服务器发起 传参: { appid:'xxxx', secret:'xxx' } url: https://api.weixin.qq.com "privilege":[ "PRIVILEGE1" "PRIVILEGE2" ], "unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL" //只有在用户将公众号绑定到微信开放平台帐号后 授权登陆,支付等请参见安卓app和微信授权登录及分享完整对接
新建个文件wechatAuth.js 这个文件可以不用更改 const queryString = require('qs') // 应用授权作用域,snsapi_base (不弹出授权页面,直接跳转 ,只能获取用户openid), // snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。 并且,即使在未关注的情况下,只要用户授权,也能获取其信息) const SCOPES = ['snsapi_base', 'snsapi_userinfo'] class VueWechatAuthPlugin /axios/wechatAuth' //这里是配置微信公众号的appid Vue.use(wechatAuth, { appid: "123", scope: 'snsapi_userinfo
申请微信测试号:微信测试号申请 参考微信网页授权官方文档 !! 需要注意的几点 请注意,这里填写的是域名(是一个字符串),而不是URL,因此请勿加 http:// 等协议头 在微信公众号请求用户网页授权之前,要先到公众平台官网中修改授权回调域名 正式公众号:开发 - 接口权限 - 网页服务 - 网页帐号 - 网页授权获取用户基本信息修改授权回调域名 测试公众号:直接在首页 - 功能服务 - 网页账号中修改回调域名 关于网页授权的两种scope的区别说明 1、以 snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的。 starWxprivilege'=>$wx_info->privilege,//用户特权信息 // 'starWxunionid'=>$wx_info->unionid,//只有在用户将公众号绑定到微信开放平台帐号后
wx from 'wx' 授权有两种方式。 一种直接获取,一种弹框授权。 第一步:用户同意授权,获取code 第二步:通过code换取网页授权access_token 第三步:刷新access_token(如果需要) 第四步:拉取用户信息(需scope为 snsapi_userinfo appId: '', // 必填,公众号的唯一标识 timestamp: , // 必填,生成签名的时间戳 nonceStr: '', // 必填,生成签名的随机串 signature: ' appId: 'xxx', // 必填,公众号的唯一标识 timestamp, // 必填,生成签名的时间戳 nonceStr, // 必填,生成签名的随机串 signature
# 公众号网页开发经验总结 # 内网穿透 sunny-Ngrok:https://www.ngrok.ccopen in new window 修改 webpack-dev-server 的 disableHostCheck : true # 移动端调试神器 VConsole:https://github.com/Tencent/vConsole # 微信公众号开发文档 公众号开发文档open in new window JS-WX-SDK 文档open in new window # 如何让网页只在微信内打开 通过 userAgent 判断 // 判断是否是微信环境 function getIsWxClient() { var ua == "undefined") { return true; } else { return false; } } # 公众号内保持登录状态 微信内网页不可使用 local/sessionStorage # 扫码关注公众号登录网站 生成带参数的二维码 生成二维码open in new window 用户扫描二维码 用户扫码后-获取用户 openidopen in new window获取 用户关注/
基本配置 1.设置—公众号设置—功能设置—配置JS接口安全域名 安全域名配置规则如下 2.开发—基本配置 开发者密码第一次使用需要重新设置 记录 开发者ID(AppID) 开发者密码(AppSecret permission denied该公众号没有权限使用这个JSAPI,或者是调用的JSAPI没有传入config的jsApiList参数中(部分接口需要认证之后才能使用)。 在iOS和Android都无法分享(请确认公众号已经认证,只有认证的公众号才具有分享相关接口权限,如果确实已经认证,则要检查监听接口是否在wx.ready回调函数中触发) 服务上线之后无法获取jsapi_ticket )跳转到b链接,invalid signature签名失败(后台生成签名的链接为使用jssdk的当前链接,也就是跳转后的b链接,请不要用微信登录的授权链接进行签名计算,后台签名的url一定是使用jssdk ,6.2版本开始已经支持直接获取火星坐标 查看公众号(未添加): “menuItem:addContact”不显示,目前仅有从公众号传播出去的链接才能显示,来源必须是公众号 ICP备案数据同步有一天延迟
前言 ---- 工作中难免需要给客户处理各种问题,此时开发者需要使用微信开发者工具调试,调试前需要客户将开发者配置为公众号的网页开发者。 情景再现 ---- 开发者使用微信开发者工具调试微信公众号网页时提示: 未绑定为公众号的网页开发者 2. 绑定开发者微信号 ---- 进入 “设置与开发 - 开发者工具”,点击 “web开发者工具” 点击 “绑定开发者微信号” 绑定的微信号当前必须已经关注了该公众号,否则会出现以下提示,搜索公众号名称关注下再来绑定 需要绑定的微信号如果已经关注,则可以走到下面操作,点击 “邀请绑定” 绑定的微信号会收到一条邀请绑定通知,点击进入“公众平台安全助手”接收邀请就可以了
开源中国应该百分百使用了此接口,而腾讯云开发者社区就不一定了,通过查看公众号设置中的授权管理,腾讯云官网只授权了公众号账号信息服务和获取认证状态信息两个权限集。 而开源中国的授权权限就是本文中要说明的两个:公众号账号信息服务和素材管理。 公众号账号信息服务 用于获取授权公众号的信息,例如头像、名称、二维码地址、头像地址、简介等 素材管理 用于获取发布的文章等 配置 开始之前需要先注册微信开放平台,有一个发布过文章的公众号用于测试。 在微信开发平台中进行配置: 微信第三方平台详情 获取APPID和AppSecret; 开发配置中配置公众号权限集:3 公众号账号信息服务 和 11 素材管理; 开发配置中配置开发资料,设置授权流程相关的域名和白名单等 授权后的回调地址; test.php 用来编写获取公众号账号信息、文章的代码。