官网文档

网页授权流程分为四步:

  1. 引导用户进入授权页面同意授权,获取code
  2. 通过 code 换取网页授权access_token(与基础支持中的access_token不同)(我的需求只需要到第二部)
  3. 如果需要,开发者可以刷新网页授权access_token,避免过期
  4. 通过网页授权access_token和 openid 获取用户基本信息(支持 UnionID 机制)

#前提

  1. 已认证服务号,默认拥有 scope 参数中的snsapi_base和snsapi_userinfo 权限

  2. 回调域名授权

第一步:用户同意授权,获取code

在确保微信公众账号拥有授权作用域(scope参数)的权限的前提下(已认证服务号,默认拥有 scope 参数中的snsapi_base和snsapi_userinfo 权限),引导关注者打开如下页面:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

若提示“该链接无法访问”,请检查参数是否填写错误,是否拥有 scope 参数对应的授权作用域权限。

尤其注意:由于授权操作安全等级较高,所以在发起授权请求时,微信会对授权链接做正则强匹配校验,如果链接的参数顺序不对,授权页面将无法正常访问
##参考链接(请在微信客户端中打开此链接体验)##
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx520c15f417810387&redirect_uri=https%3A%2F%2Fchong.qq.com%2Fphp%2Findex.php%3Fd%3D%26c%3DwxAdapter%26m%3DmobileDeal%26showwxpaytitle%3D1%26vb2ctag%3D4_2030_5_1194_60&response_type=code&scope=snsapi_base&state=123#wechat_redirect

尤其注意:跳转回调redirect_uri,应当使用 https 链接来确保授权 code 的安全性。

如果用户同意授权,页面将跳转至 redirect_uri/?code=CODE&state=STATE。

代码展示

<!DOCTYPE html>
<html lang="en">
<head><meta charset='utf-8'><meta name='viewport' content='width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no' /><meta name='apple-mobile-web-app-capable' content='yes'><meta name='format-detection' content='telephone=no' /><title>授权测试</title><script src='/js/jq.vue.js'></script><style>html {background-color: #F1F1F1;}</style>
</head>
<body>
<section id='app'><div style="margin: 20px;font-size:20px;" @click="getOpenid">微信授权获取用户id</div><div style="margin: 20px;font-size:20px;" @click="getUserid">支付宝授权获取用户id</div><div style="margin: 20px;display: flex;flex-direction: column;justify-content: flex-start" ><input v-model="openid" style="margin: 10px;line-height: 30px;"><input v-model="userid" style="margin: 10px;line-height: 30px;"></div>
</section>
</body>
<script>var app = new Vue({el: '#app',data: {appid: "wxsfsdf72d1a07badd5", //自己的 公众号 appidopenid: "",userid: ""},methods: {getOpenid() {let uri = "https://testapp.hyaomall.com//index.php/Template/Zhanganpingtest/test_pay"; //重定向回调地址let url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid="+ this.appid+"&redirect_uri=" + uri+"&response_type=code&scope=snsapi_base&state=123#wechat_redirect";const querystring = this.getQueryString();let code = querystring.code;if(!code){location.href = url;alert(url);}else{$.ajax({type: 'post',url: "/index.php/Data/Testdata/getQuth", //后台请求路径  获取oppiddata: {"code": code},dataType: "json",success: function (data) {alert(JSON.stringify(data));},error: function (data) {alert(JSON.stringify(data));}});}},/*** url參數截取* @returns {{}}*/getQueryString() {const url = location.search;const rs = {}if(url.indexOf('?') === 0){const querystring = url.substr(1);const kvArr = querystring.split('&');kvArr.forEach(item => {const temp = item.split('=')const key = temp[0];const val = temp[1];rs[key] = val})}return rs;},getUserid(){}}});
</script>
</html>

PHP 后台代码

 public function getQuth(){$code = trim(I ('post.code' ));//code//公众号id$appid = "wx3e3d72d1a07wsesa";//公众号密钥$appsecret = 'c7b2a1951bf1b59398ddsafe890';$oauth2Url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$appsecret&code=$code&grant_type=authorization_code";$oauth2 = $this->getJson($oauth2Url);echo json_encode($oauth2);}private function getJson($url){$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);$output = curl_exec($ch);curl_close($ch);return json_decode($output, true);}

效果演示 (上传不了视频,配图了)

在微信客户端打开

重定向回调地址(这里通过截取回调地址携带的code)

code传入后台进行获取token 以及 openid

微信公众号网页授权获取用户信息的流程相关推荐

  1. php微信授权没有code返回,解决关于微信公众号网页授权获取code参数的问题

    解决关于微信公众号网页授权获取code参数的问题 发布时间:2018-07-24 23:21, 浏览次数:3327 , 标签: code * 在微信网页授权过程中,需要获取code参数,因为我用的是公 ...

  2. 微信公众号开发之获取用户信息

    微信获取用户信息的方式有两种,静默授权(无需用户同意)和非静默授权(需要用户" 手动点击 "拉取授权,可以用户无需关注公众号即可获取用户信息) 整体的代码请查看最后,前边为原理介绍 ...

  3. 微信公众号接入和获取用户信息

    主要原理: 1.从微信公众号发来的get请求为验证服务器安全性的 2.从微信公众号发来的post请求为接受和回复用户信息的 3.先根据是否有code来进行判断,如果有code的话,根据code换取op ...

  4. 【微信公众号开发】获取用户信息时,有时成功获取,有时提示“invalid openid hint”

    原因:保存openid的session在某个方法里被重新赋新值了.所以一旦调用了这个方法,再去获取用户信息时,就会报错.

  5. 微信授权地理位置php,微信公众号第三方授权获取用户的的地理位置--坑

    首先注册公众号,配置好 URL js URl ,这个就不多介绍了 第一步,直接 在菜单里 同意授权,获取code 这是第一个坑 ,记住,一定要用  urlEncode 对你的 重定向 URL  进行处 ...

  6. 微信公众号第三方授权获取用户的的地理位置--坑

    首先注册公众号,配置好 URL js URl ,这个就不多介绍了 第一步,直接 在菜单里 同意授权,获取code 这是第一个坑 ,记住,一定要用 urlEncode 对你的 重定向 URL 进行处理 ...

  7. 微信公众号网页授权--前端获取code及用户信息(vue)

    前段时间开发微信公众号网页授权,虽然网上已经有很多关于这方面的博客或者教程,但是第一次开发还是遇到挺多坑的,以下分享一下我的踩坑填坑之路. 一.测试号相关配置 首先在你公司申请的测试号上配置好相关信息 ...

  8. 微信公众号网页授权--前端获取code及用户信息(vue)【简单详细版】

    嗨喽大家好,前段时间开发微信公众号网页授权,虽然网上已经有很多关于这方面的博客或者教程,但是第一次开发还是遇到挺多坑的,以下分享一下我的遇到的一些问题的见解,希望对你们有帮助. 一.测试号相关配置 首 ...

  9. 微信公众号网页授权,获取用户信息以及openid -- PHP后台

    微信公众号网页授权,获取用户信息以及openid 这几天做项目,想通过公众号的appid获取用户的openid就,然后在网上查资料,问朋友,最后找到了方法,就是这个网页授权. 起初一直很蒙,这个怎么弄 ...

最新文章

  1. 【Unique Binary Search Trees II】cpp
  2. 创建两个相同名称的文件夹
  3. mysql 连接 选库 查询
  4. 第十节: 利用SQLServer实现Quartz的持久化和双机热备的集群模式 :
  5. 深度学习Dubbo系列(入门开篇)
  6. GitHub上传文件的过滤规则 -- windows下
  7. Windows 10如何强制删除多余的语言包
  8. IE 8 Beta 2中文版首份试用体验
  9. PHP 大文件下载(方式3 支持断点续传)
  10. Provisioning Services 7.6 入门到精通系列之二:基础架构环境
  11. Spring Cloud Alibaba之服务治理Nacos
  12. Marlin固件 ---- G_Code 命令解析
  13. Android主题换肤实现原理与Demo
  14. 在VB.NET中生成随机数
  15. 2401C可解RFX2401C缺货的燃眉之急,也可直接诶替代CC2592/CC2591
  16. javascript案例30——continue、break
  17. 2012计算机科学排名,2012USNews美国大学计算机科学专业排名
  18. 移动终端软件测试基础知识,移动终端软件测试基础知识 - Mr.南柯 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
  19. 【Python随笔】python进程池ProcessPoolExecutor的用法与实现分析
  20. [转]DTV(数字电视)扫盲-DVB介绍

热门文章

  1. 九乐客会员营销系统v1.1.7
  2. python未定义_浅谈Python程序的错误:变量未定义
  3. AVAudioPlayer播放在线音频文件
  4. AD域控搭建(win2008 R2系统)
  5. 【论文导读】Stable Learning via Sparse Variable Independence
  6. 复杂的POI导出Excel表格(多行表头、合并单元格)
  7. 日常Linux命令--vi/vim复制一行,粘贴
  8. 【满分】【华为OD机试真题2023 JAVAJS】取出尽量少的球
  9. 标注工具 labelme安装及使用 Win10
  10. 你还不知道的测试用例相关知识