tp5.1微信登录(微信开放平台)
流程1:获取请求网址就是一个有二维码的网页
流程2:扫码授权后获取code
流程3:通过code获取微信基本信息及openid
<?phpnamespace app\api\controller;
use think\Controller;
//这是一个微信登录的处理类,用的是微信开放平台
class Weixin extends Controller
{private $AppID = '';//开发平台有private $AppSecret = '';//开发平台也有private $Redirect_uri = '';//回调地址private $scope = 'snsapi_login';//这里不用动如果是微信登录//前端请求这个接口,获取登录的url,这个url可以直接弹出带二维码的网页public function openWx(){return json(['status' => 'success', 'url' => "https://open.weixin.qq.com/connect/qrconnect?appid=" . $this->AppID . "&redirect_uri=" . $this->Redirect_uri . "&response_type=code&scope=" . $this->scope . "&state=STATE#wechat_redirect"]);}//这里就是接收code还有state。用来做操作public function getToken(){$code = $_GET['code'];//判断是否授权if (empty($code)){$this->error('授权失败');}$token_url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' . $this->AppID . '&secret=' . $this->AppSecret . '&code=' . $code . '&grant_type=authorization_code';//获取token,为了获取access_token 如果没有就弹出错误$token = json_decode(file_get_contents($token_url));if (isset($token->errcode)) {echo '<h1>错误:</h1>' . $token->errcode;echo '<br/><h2>错误信息:</h2>' . $token->errmsg;exit;}$access_token_url = 'https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=' . $this->AppID . '&grant_type=refresh_token&refresh_token=' . $token->refresh_token;//获取access_token ,为了获取微信的个人信息,如果没有就弹出错误$access_token = json_decode(file_get_contents($access_token_url));if (isset($access_token->errcode)) {echo '<h1>错误:</h1>' . $access_token->errcode;echo '<br/><h2>错误信息:</h2>' . $access_token->errmsg;exit;}$user_info_url = 'https://api.weixin.qq.com/sns/userinfo?access_token=' . $access_token->access_token . '&openid=' . $access_token->openid . '&lang=zh_CN';//获取用户信息$user_info = json_decode(file_get_contents($user_info_url));if (isset($user_info->errcode)) {echo '<h1>错误:</h1>' . $user_info->errcode;echo '<br/><h2>错误信息:</h2>' . $user_info->errmsg;exit;}
//这里转换为数组$rs = (array)$user_info;//返回用户信息return $rs;}
这里说明一下,传code我不是直接传到这里的,我还有另外一个操作方法,可以存入数据库或者其他操作
//另外一个方法,code还有state传到这个方法里面来public function getWx(){header('Access-Control-Allow-Origin:*');//允许跨域请求$code = $_GET['code'];//接收code$weixin = Controller("Weixin");//实例化上个类//获取用户信息$info = $weixin->getToken($code);接受返回值,数组的$res = Db::name('user')->where('user_id', $checkToken['data']['data']['user_id'])->update(array('openid' => $info['openid'], 'nickname' => $info['nickname']));//存入数据库$data = Db::name('user')->where('user_id', $checkToken['data']['data']['user_id'])->find();//查一下,可能办法有点笨if ($res) {return json(['status' => 'success', 'msg' => $data]);} else {return json(['status' => 'error', 'msg' => '绑定失败']);}}
以上就是比较完整的操作步骤了,如果喜欢可以评论一下,点个关注,博主发的所有波本都是自己做过的,质量保证
tp5.1微信登录(微信开放平台)相关推荐
- 英雄联盟微信登录服务器怎么回事,英雄联盟微信怎么登陆 lol微信登录功能开放大区一览...
英雄联盟在5月6日开放了部分大区的微信登录功能,玩家们现在可在目前开放了微信登录功能的 大区使用微信登录,但需要将微信账号与已有QQ账号进行绑定,英雄联盟微信登录功能预计会在5月内于全大区开放,下面小 ...
- 微信红包封面开放平台使用指南
微信官方每年1月初都会举行一个公开课,将过去一年微信做的事情以及对未来的思考和规划跟大家做一个分享,在今年的公开课上,有别于以往的上线了一个全新并且独立的开放平台--微信红包封面开放平台. 1.什么是 ...
- 微信登录(微信公众号授权)的开发(详解)
1.UnionId和OpenId 微信登录最重要的两个返回信息,一个是UnionId,一个是OpenId.两者之间有着必然的联系. 首先,先来理一下微信开放平台的架构.开发微信登录,必须有一个开放平台 ...
- 微信登录 sdk 服务器,微信登录(微信公众号授权)的开发(详解)——两三行代码的事,何必呢...
新版重构的SDK已经开始在写了,具体的使用方法参考 新版重构的SDK已经开始在写了,具体的使用方法参考 新版重构的SDK已经开始在写了,具体的使用方法参考 新版重构的SDK已经开始在写了,具体的使用方 ...
- 无需公众号PHP微信登录微信授权微信第三方登录微信开发php开发
无论是个人还是公司,无需申请公众号,无需申请微信开放平台,即可实现手机网站和PC网站的微 信登录!!! 正常的微信登录是这样的: 1.手机版网站做微信登录,需要申请一个认证公众号,认证不仅需要公司营 ...
- dz论坛微信登录微信社区开通,手机访问显示无改站点
如题,开通微信登录以后,手机访问不了,查看微信社区,一直都是开通中,以下两步解决了问题: 1.在 微信登录 这里 设置 网站 IP为你的服务器ip. 2.用手机扫描下图或者访问此 URLhttp:// ...
- 使用HttpClient登录微博开放平台,获取授权code
最近需要使用微博开放平台的一些功能,由于官方sdk略坑,故决定自己写个HttpClient来模拟获取授权code.不多说,直接上代码. 首先配置微博开放平台基本参数. private static S ...
- 网站接入微博快捷登录-微博开放平台
微博开放平台地址 因为我是接入web网站微博登录功能,所以,跳过移动应用部分,向下滑动 Web网站 OAuth2.0授权,与微博登录组件. 示例 使用接口深度开发,适合后端开发人员 使用微博的OAut ...
- 微信小程序开放平台代码部署特约商户
data format error 范例: {"extAppid":"wx123456789123456789","directCommit" ...
- 微信开放平台开发(2) 网站应用微信登录
关键字:微信公众平台 微信开放平台 微信登录 微信扫码登录 使用微信账号登录网站 作者:方倍工作室 原文:http://www.cnblogs.com/txw1958/p/weixin-qrlogi ...
最新文章
- 深圳神经科学研究院院长谭力海: AI取代人脑? 不, 必须向人脑“学习”!
- S01E05 Android体系结构
- 解决springboot读取jar包中文件的问题
- android 帧动画旋转,安卓动画实现
- mysql identifier name is too long_ORA-00972: identifier is too long 问题处理
- ip访问次数统计 nginx_Linux分析Nginx日志统计IP访问次数的shell脚本
- JavaSelenium处理页面Table以及Table中随机位置的数据
- net java互相调用_Java与.NET的WebServices相互调用
- T3139 栈练习3 codevs
- AOL架构原则.优秀API设计.Yeoman工具
- windows上java调用gdal.jar报错
- php基础之时间函数(date(), time(), microtime())
- 超级灰色按钮克星更新v1.3.1112.40
- 树莓派安装opencv3.4.3时缺少boostdesc等文件及一些常见的报错
- Ezchip Tilera Tile-Mx100: Der 100-ARM-Netzwerkprozessor
- 为什么在Visual Studio Code 中输入的汉字变成繁体字了?电脑上其他地方的输入是正常的
- X86-64指令解析
- springboot整合全文搜索引擎Elasticsearch | Spring Boot 28
- VLAN、VXLAN
- POSCMS 网站设置
热门文章
- 医疗器械安全要求检查GB9706.1-2020标准注册检报告_安规性能试验新版GB9706.1-2020风险管理要求
- 全志V40 HDMI + LVDS实现双屏异显
- 如何实现自动化整理桌面
- fseek( fp, SEEK_SET, SEEK_END );的作用?以及如何获取一个文件的大小?
- 如何把简单的事情一次做对?
- 西门子S7-200PLC
- PCIEBPMCx4板卡
- juniper SSG 导出导入配置
- C字符串类型的 12345 转换为int类型的 12345
- 我的工程师爸爸 - 音频应用DIY系列之四:慢速英语