PHP微信网页授权登录
一、微信OAuth2.0机制网页授权登录,获取用户基本信息。主要有以下简略步骤:
第一步:用户同意授权,获取code
第二步:通过code换取网页授权access_token
第三步:拉取用户信息(需scope为 snsapi_userinfo)
微信网页授权开发文档请看官网:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842
二、关于Scope 权限的两种
snsapi_base 默认允许授权,无须用户同意
snsapi_userinfo 进入授权页需要用户同意才可进入
三、需要注意的点
设置IP白名单
检查当前公众号是否为服务号
回调地址填写是否正确
回调地址需要url编码 如 https:// 为 http%3A%2F%2F
四.前台
第一步: 请求下方地址,拿到服务器回调的Code
请求地址: 微信公众平台APPID,回调地址与scope类型
`https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appid}&redirect_uri=${回调地址}&response_type=code&scope=snsapi_userinfo&state=123#wechat_redirect`
授权后会获得codehttps://***.cn/?code=***********&state=123#/
五、后台
获取access_token
获取用户基本信息(头像、昵称)
$code = $input_data['code']??''; //前台获得的code值:061Wxn0w3uLaXV20ep3w3Qm1nA0Wxn0w$access_token = WechatWeb::accessToken(); //可获得access_token :42_bb9agZJzvR3jFHIFa4BmfMUWPdH2uagt0F3l4T9jZigTVm8GP_zkvLAxc0yHV79nY85OrdCmmiEARajoLlm3sVkDLPH-aRaRsWcrWcK8W5dtk6G5Jnf9YDnkRchIHY90f9nHbBvCdIqbL_YDRPBbACALJV
//获取access_token的域名: 'https://api.weixin.qq.com/cgi-bin/token?appid={$app_id}&secret={$app_secret}&grant_type=client_credential';if(empty($access_token)) throw new \Exception('第三方登录方式异常:access_token',0);$openid = WechatWeb::getOpenid($code); //可通过code获取 获取用户基本信息的access_token和openid
/* 域名: "https://api.weixin.qq.com/sns/oauth2/access_token?appid={$app_id}&secret={$app_secret}&code={$Code}&grant_type=authorization_code";^ array:5 ["access_token" => "42_5d_j3Tk5s8LF0rArXu-9CLI8t3LV1o8kGFCq9qo_fU4OyZd7bULGTaKU2VBHWIxsfbjqHS78N7fbgXFh9d2GdQ""expires_in" => 7200"refresh_token" => "42_aahPTh5Dn0lc2De5BoPPlXtovXRX7eoO0gT6EfyQcGaq-vT_iOo4TOll-qpnbeGi_ftI2dpE0FRt262yR-M3FA""openid" => "oW2tQ6F2Wnxzp4rJiok5NTFX9c0Y""scope" => "snsapi_userinfo"]* */
if(empty($openid['openid'])) throw new \Exception('第三方登录方式异常:openid',0);$auth_info = WechatWeb::actToUserInfo($openid['access_token'],$openid['openid']);
/*
获得的$auth_info 用户信息域名:'https://api.weixin.qq.com/sns/userinfo?access_token='.$access_token.'&openid='.$openid;
此处的$access_token为网页授权$access_token非普通授权$access_token
^ array:9 ["openid" => "oW2tQ6F2Wnxzp4rJiok5NTFX9c0Y""nickname" => "深正互联-超如""sex" => 0"language" => "zh_CN""city" => """province" => """country" => """headimgurl" => "https://thirdwx.qlogo.cn/mmopen/vi_32/rAjztjufSYsbZnicA9VxQiao3DvUUMaJlbU0sWvmGq2icxia61zJJ8aTSzFibiaDSRaV53dgXZlsvVRlW2iaIYrJQUG4w/132""privilege" => []]* */
empty($php_input['name']) && $update_data['name'] = $auth_info['nickname'];
PHP微信网页授权登录相关推荐
- 微信公众号开发(一) 微信网页授权登录
微信网页授权登录 前期准备 授权登录 获取微信数据 处理授权拒绝 前期准备 1.微信公众号开发,首先要搞一个公众号,开发阶段可以申请一个公众平台测试账号. (进入到微信公众公众平台,找到开发者工具,点 ...
- php微信授权ajax,ajax 实现微信网页授权登录
项目背景 因为项目采用前后端完全分离方案,所以,无法使用常规的微信授权登录作法,需要采用 ajax 实现微信授权登录. 需求分析 因为本人是一个PHPer ,所以,微信开发采用的是 EasyWeCha ...
- java ajax 微信网页授权_ajax 实现微信网页授权登录的方法
AJAX 的 ajax 实现微信网页授权登录的方法 项目背景 因为项目采用前后端完全分离方案,所以,无法使用常规的微信授权登录作法,需要采用 ajax 实现微信授权登录. 需求分析 因为本人是一个ph ...
- 微信网页授权登录的方法
微信网页授权登录官方文档 微信网页授权登录的方法–推荐文章一 微信网页授权登录的方法–推荐文章二 总结: 微信授权方式(scope的属性值控制): 应用授权作用域,snsapi_base (不弹出授权 ...
- Springboot + Spring Security多种登录方式:账号用户名登录+微信网页授权登录
一.概述 实现账号用户名+微信网页授权登录集成在Spring Security的思路,最重要的一点是要实现微信登录通过Spring Security安全框架时,不需要验证账号.密码. 二.准备工作 要 ...
- 微信网页授权登录java后台实现
建议先阅读微信开发-网页授权登录官方文档: https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_au ...
- php微信登录代理转发,PHP微信网页授权登录
PHP微信网页授权登录 2018年04月10日 15:44:03阅读数:601 namespace Org\WeChat; /** * 微信授权相关接口 */ class Wechat { //高级功 ...
- SpringBoot + Spring Security多种登录方式:账号+微信网页授权登录
一.概述 实现账号用户名+微信网页授权登录集成在Spring Security的思路,最重要的一点是要实现微信登录通过Spring Security安全框架时,不需要验证账号.密码. 二.准备工作 要 ...
- Spring Boot Security 多种登录方式集成配置思路及方法 账号用户名登录+微信网页授权登录
概述 实现账号用户名+微信网页授权登录集成在Spring Security的思路 前情提要 本思路完全抛弃Spring Security的配置式账号密码登录模式,采用完全独立的Filter.Provi ...
- ajax 微信code获取_ajax 实现微信网页授权登录的方法
项目背景 因为项目采用前后端完全分离方案,所以,无法使用常规的微信授权登录作法,需要采用 ajax 实现微信授权登录. 需求分析 因为本人是一个phper ,所以,微信开发采用的是 EasyWeCha ...
最新文章
- java四种xml_Java中四种XML解析技术
- Havel-Hakimi定理
- C语言中的变量是怎么回事?
- react textarea 空格为什么不换行_你需要的 React + TypeScript 50 条规范和经验
- 【学习笔记】传输层:TCP协议(报文段、连接管理{握手}、可靠传输、流量控制、拥塞控制)
- java模拟手机浏览web_PC上测试移动端网站和模拟手机浏览器
- vue获取table一列数据_vue中比较重要的小知识点
- 当子元素设置position absolute的时,父元素必须设置position属性
- nginx反向代理模块配置详解_nginx反向代理配置详解
- 从程序员到项目经理(28):该死的结果导向(只看结果,不问过程到底行不行?)...
- linux添加Qt的fontconfig,qt – 如何在Red Hat 5.3中将fontconfig更新为更新版本?
- python小波分解相关
- Android 腾讯地图定位功能一二三
- 遍历文件夹批量重命名
- linux打开pkg文件怎么打开,archlinux32无法打开文件 ×××.pkg.tar.zst 无法安装新包,如何解决?...
- 玻色量子与华夏、人行、龙盈智达联合发表量子金融研究成果
- 在阿里云ACP认证考试中授权码有效期时限是多久?
- 探花交友_第7章-完善消息功能以及个人主页
- 18000担粮草和新四军情报
- 考研政治——马原相关哲理
热门文章
- 【unity shader】毛绒材质效果的实现
- 使用 PhyML 构建进化树
- 高效记忆/形象记忆(06)英语单词记忆-字母编码
- 解决com.lowagie.text.DocumentException: Font 'STSong-Light' with 'UniGB-UCS2-H' is not recognized.
- python excel数据合并_如何用python将excel数据合并
- 批量读取文件夹下所有excel文件里的内容,放入列表 把所有不管行列名如何excel合并成一个大的excel 批量读取excel,批量合并excel
- Excel如何合并相同项单元格
- 计算机容斥原理,三集合容斥原理解题技巧
- Mac 谷歌浏览器chrome恶意插件劫持Any search(TotalSearchToolbox)处理
- 拆 米家台灯_拆机测评 篇二: 就是一台149元 Mijia 米家台灯,有什么可测的?...