redirect_uri 参数错误,这个错误请检查网页授权,大部分是回调的授权域名配置问题

公众号H5授权登录

在微信公众号里获取微信用户信息分两种方式

注意:以下所有操作,都需要再公众号配置网页授权配置域名授权

1.以snsapi_base为scope发起的网页授权

这种方式是静默获取,对用户来说是无感的,看不到任何变化

使用场景,只能获取到openid,调用微信支付使用,无法获取头像昵称等数据

$wxurl = https://open.weixin.qq.com/connect/oauth2/authorize?appid=你的APPID&redirect_uri={$url}&response_type=code&scope=snsapi_base&state=STATE&connect_redirect=1#wechat_redirect

注意参数说明:

appid=你的APPID

{$url}回调的url地址,url需要用urlencode编码

scope=snsapi_base 静默授权类型

使用说明

$wxurl 这个链接地址是固定的拼接方式,微信官网有文档点击我获取

把拿到的这个连接给前端,前端通过让用户触发这个链接,跳转获取微信的code参数,或者自己通过代码触发跳转

微信跳转后得到的链接 https://domain.com/index/index/wxlogin?code=051pYGkl2bQ3S54TUxll2ttJ6Z2pYGk0&state=STATE

后面多了code参数和state参数,如果跳转的是后端,后端直接获取code就可以,如果跳转的是前端, 前端截取url,拿到code传给后端

$wxurl必须在微信里打开才能获取到code,开发调试请使用微信开发者工具,获取结果如下

{"access_token":"38_gUjz8OA3RUbAiGSEB-o68bSAyI8rGVwOXmNepBHXKdcCEiNotFb3e9CTzFTxsFt21PxwXT3l9qUsL3gNBcsg8A","expires_in":7200,"refresh_token":"38_7aZk0NQHhLOO5e3j-uqVl5na48CMvuoedJ90c3lDmby8mOEsBHcsfT4SPtQJTMpMdx8GKFFR7sXFj6Nuu8h21A","openid":"obBHk04gFkeKsRVDowMfXn-LLYpU","scope":"snsapi_base"}

实现截图

实现代码

//后台代码  我用的是tp5
public function wxlogin(){$appid = '';$appsecret = '';$input = input();if(!empty($input['code'])){$url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appid.'&secret='.$appsecret.'&code='.$input['code'].'&grant_type=authorization_code';$client = new Client(); //GuzzleHttp\Client 模拟http 请求,如果不会用 直接换成curl函数$result = $client->get($url)->getBody()->getContents();echo $result;//die();$api_data = json_decode($result, true);//$api_data 里就是我们要获取的openid}$url = urlencode('https://d-fangfei.bigchun.com/index/index/wxlogin');$this->assign('url', $url);return $this->view->fetch();}
前端代码
<p><a href="https://open.weixin.qq.com/connect/oauth2/authorize?appid=你的APPID&redirect_uri={$url}&response_type=code&scope=snsapi_base&state=STATE&connect_redirect=1#wechat_redirect">获取静默授权获取code</a>
</p>

2.以snsapi_userinfo为scope发起的网页授权

这种方式是授权获取,会弹出让用户确认获取资料按钮

使用场景,可以获取用户openid,头像,昵称,性别等资料

$wxurl = https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri={$url}&response_type=code&scope=snsapi_userinfo&state=STATE&connect_redirect=1#wechat_redirect

注意参数说明:

appid=你的APPID

{$url}回调的url地址,url需要用urlencode编码

scope = snsapi_userinfo

静默授权类型

使用说明

$wxurl 这个链接地址是固定的拼接方式,微信官网有文档点击我获取

把拿到的这个连接给前端,前端通过让用户触发这个链接,跳转获取微信的code参数,或者自己通过代码触发跳转

微信跳转后得到的链接 https://domain.com/index/index/wxlogin?code=051pYGkl2bQ3S54TUxll2ttJ6Z2pYGk0&state=STATE

后面多了code参数和state参数,如果跳转的是后端,后端直接获取code就可以,如果跳转的是前端, 前端截取url,拿到code传给后端

实现过程截图

$wxurl必须在微信里打开才能获取到code,开发调试请使用微信开发者工具,获取结果如下:

{"openid":"obBHk04gFkeKsRVDowMfXn-LLYpU","nickname":"D永涛","sex":1,"language":"zh_CN","city":"深圳","province":"广东","country":"中国","headimgurl":"https:\/\/thirdwx.qlogo.cn\/mmopen\/vi_32\/DYAIOgq83eremdfYmic4MpxiadSdloCicKKNOdMZCIIQdwmiaPluD8NDVxXN5axqc9kmVGxVoFo88UkEy9GPKpicQUw\/132","privilege":[],"unionid":"oKzvn1ZU_Ne_4or8VLwhtZxlJOJU"}

实现截图

1.触发截图

2.拼接上code后得到的结果

实现代码

//后台实现代码
public function wxlogin(){$appid = '';$appsecret = '';$input = input();if(!empty($input['code'])){$url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appid.'&secret='.$appsecret.'&code='.$input['code'].'&grant_type=authorization_code';//微信接口地址,参考接口文档$client = new Client(); //GuzzleHttp\Client 模拟http 请求,如果不会用 直接换成curl函数$result = $client->get($url)->getBody()->getContents();$api_data = json_decode($result, true);if(!empty($api_data['openid'])){$url = 'https://api.weixin.qq.com/sns/userinfo?access_token='.$api_data['access_token'].'&openid='.$api_data['openid'].'&lang=zh_CN';//微信接口地址,参考接口文档$client = new Client();$result = $client->get($url)->getBody()->getContents();$userinfo = json_decode($result, true);print_r($userinfo);}}$url = urlencode('https://d-fangfei.bigchun.com/index/index/wxlogin');$this->assign('url', $url);return $this->view->fetch();}
前端实现代码
<p><a href="https://open.weixin.qq.com/connect/oauth2/authorize?appid=你的APPID&redirect_uri={$url}&response_type=code&scope=snsapi_userinfo&state=STATE&connect_redirect=1#wechat_redirect">微信授权登录</a>
</p>

有问题可以加裙问我,我是群主721200119

redirect_uri 参数错误 公众号H5授权登录原理相关推荐

  1. 【微信公众号H5授权登录】

    微信公众号H5授权登录 废话不多,直接上代码(这里只写代码的实现) 废话不多,直接上代码(这里只写代码的实现) 页面进来判断微信环境 onShow() {//设置初始值为false,微信环境下才能打开 ...

  2. 微信网页扫码登录和公众号网页授权登录的比较

    最近在做PC二维码扫码登录的功能,总结了一些问题 # 主要区别 二者的主要区别: 差异 PC网页扫码登录 公众号网页授权登录 账号要求 需要开放平台账号创建网站应用 一个认证过的服务号就可以(也可以使 ...

  3. 微信公众号网页授权登录的超简单实现步骤

    微信开放平台为第三方移动程序提供分享.传播的接口, 使用户可将第三方程序的内容发布给好友或分享至朋友圈, 下面这篇文章主要给大家介绍了关于微信公众号网页授权登录的超简单实现方法, 需要的朋友可以参考下 ...

  4. 基于TP5、EasyWeChat、fastadmin微信公众号网页授权登录

    第一种使用EasyWeChat拉起登录 使用 composer 安装 EasyWeChat $ composer require overtrue/wechat:~5.0 -vvv 或者在compos ...

  5. 微信公众号H5开发登录授权流程

    很久没写博客了,最近实在是太忙,有太多东西想写想记录.今天写个关于微信登录的过程吧,这次项目是我第一次写关于微信的东西,这个登录授权搞了半天.但总算是把流程搞明白了,先附上微信官方文档 微信公众平台 ...

  6. 微信公众号网页授权登录多域名的解决

    由于微信网页开发,需要获取用户信息,所以就需要网页授权,但是在微信公众平台公众号只能设置一个回调域名,现在 只有一个公众号,但是我多个业务不同的域名,并都需要拿到用户信息,这时一个回调域名肯定是不能解 ...

  7. [JAVA实现]微信公众号网页授权登录,java开发面试笔试题

    我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家. 扫描二维码或搜索下图红色VX号,加VX好友,拉你进[程序员面试学习交流群]免费领取.也欢迎各位一起 ...

  8. PHP微信公众号网页授权登录 扫码登录 获取用户基本信息

    前言 现在微信登录是一个网站.APP的标配,所以微信授权登录是我们应该要掌握的.微信授权登录有4种方式: 1.通过微信开放平台 2.通过认证的微信服务号 3.通过认证的微信订阅号 4.通过微信小程序曲 ...

  9. 微信公众号网页授权登录完整步骤版学不会你打我....

    微信点击授权登录 全过程版本轻松完成 第一步 注册微信测试号 具体操作步骤 第一步:用户同意授权,获取code 第二步:通过code换取网页授权access_token 第三步:拉取用户信息(需sco ...

最新文章

  1. linux oracle io 查看,Linux上Oracle是否使用异步io的诊断
  2. SpringCloud Eureka Client和Server侧配置及Eureka高可用配置
  3. windows XP和ubuntu时间一致
  4. 资源放送丨《Oracle聚簇因子的作用 - 2020云和恩墨大讲堂》PPT视频
  5. Robin负载均衡策略存在问题及CSE解决方案
  6. 【elasticsearch】elasticsearch 搜索结果的含义
  7. linux下nand flash驱动工作原理,1.3.4. Nand flash驱动工作原理
  8. 数学建模软件lingo的基本使用方法
  9. Web前端可视化绘图软件编辑器-汇总
  10. yandex安装插件教程,研究了一下午终于可以用了
  11. 大数据之spark_spark SQL的建表语句
  12. VSCODE使用EmbeddedIDE插件开发51单片机
  13. Python批量处理图片转换为灰色图片
  14. mysql 主库innodb从库myisam_MySQL的两种常用数据库存储引擎:MyISAM与InnoDB
  15. 数据库作业:第七章: 数据库设计
  16. 【第三方API】顺丰电子面单SDK调用总结-java
  17. Unity中EnableDisableComponent的用法
  18. word标尺工具应用:如何快速调整版面距离参数
  19. wireshark抓包分析SSL/TLS协议
  20. Python初学者值得拥有的3个Python优秀实践 你实践了嘛?

热门文章

  1. C++算法 | 比较大小
  2. Wrong JPEG library version: library is 80, caller expects 62 解决办法
  3. js获取时间,根据时间生成数字
  4. 网吧登陆steam启动gta5一直启动不了
  5. Android Studio 模拟器重启(解决模拟器卡死问题)
  6. CentOS7 防火墙开放端口配置
  7. python存储16bit和32bit图像
  8. 苹果Mac触控板和鼠标增强工具:Middle
  9. 怎么制定市场营销策划方案
  10. 卷积神经网络膨胀卷积