PHP实现网站应用微信登录功能详解
微信(小程序)  /  管理员 发布于 6年前   203
本文实例讲述了PHP实现网站应用微信登录功能。分享给大家供大家参考,具体如下: 所以:当你出现这种情况,可以参考下面的指导进行 根据在下的需求,选择了“网站应用开发” 的创建,然后按照官方提示进行材料的申请,一般需要三天以上 可以注意到, 当应用创建通过后,必须还要满足接口权限的获取,会有工作人员主动联系,一般一天就能完成 为了保证同一个开发账号下对应微信用户的 UnionID 绑定使用,需要在下面的列表中绑定对应的公众号/服务号,文档中介绍一般要满足微信支付功能 通过点击上图中的微信图标,直接跳转如下链接 显示效果如下: 网上看到一篇不错的文章,建议参考:微信公众号用户与网站用户的绑定方案 总结小点: 更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP微信开发技巧汇总》、《php curl用法总结》、《PHP网络编程技巧总结》、《php字符串(string)用法总结》、《PHP中json格式数据操作技巧汇总》及《PHP针对XML文件操作技巧总结》 希望本文所述对大家PHP程序设计有所帮助。背景
一、开发须知
1.概念区分
OpenID
与 UnionID
的使用,以下为微信官方文档的的介绍,请注意区分:OpenID
(加密后的微信号,每个用户对每个公众号的 OpenID
是唯一的。对于不同公众号,同一用户的 OpenID
不同)。OpenID
获取用户基本信息,包括昵称、头像、性别、所在城市、语言和关注时间。open.weixin.qq.com
)绑定公众号后,才可利用 UnionID
机制来满足上述需求。OpenID
是普通用户的标识,对当前开发者帐号唯一。一个 OpenID
对应一个公众号。UnionID
是用户统一标识。针对一个 微信开放平台帐号 下的应用,同一用户的 UnionID
是唯一的。2.归纳整理
OpenID
区分,而需要用 UnionID
区分。3.典型问题
unionID
数据的后期获取 获取用户基本信息(UnionID机制) /** * 根据用户已获得的 openID 获取其他信息 (主要为 unionID) */ public function getUnionidByOpenid($openID = ''){ $url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=" .$this->getaccesstoken() ."&openid=".$openID."&lang=zh_CN"; $jsonRes = $this->http_get($url); if ($jsonRes){ $arrRes = json_decode($jsonRes, true); return $arrRes['unionid']; }else{ return ''; } }
二、微信开放平台操作
1.简要引导
网站应用开发
的简要功能介绍 2.官方提供的场景参考
3.绑定公众账号/小程序
4.授权获取
access_token
时序图三、代码实现
1、公共文件配置
'WEIXIN_LOGIN' => array( // 微信开放平台 使用微信帐号登录App或者网站 配置信息 'OPEN_APPID' => 'wxbd961b2a6b7b2963', //应用 AppID 'OPEN_APPSECRET' => 'e6xxxxxxxxxxxxxxxxxxxxe90',//应用 AppSecret 'OPEN_CALLBACKURL' => 'http://www.52zhenmi.com/Home/Login/wxBack', //微信用户使用微信扫描二维码并且确认登录后,PC端跳转路径 ),
2.核心代码
public function wxIndex(){ //--微信登录-----生成唯一随机串防CSRF攻击 $state = md5(uniqid(rand(), TRUE)); $_SESSION["wx_state"] = $state; //存到SESSION $callback = urlencode($this->callBackUrl); 'https://https://blog.csdn.net/u011415782/article/details/open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect'; $wxurl = "https://https://blog.csdn.net/u011415782/article/details/open.weixin.qq.com/connect/qrconnect?appid=" .$this->appID."&redirect_uri=" .$callback."&response_type=code&scope=snsapi_login&state=" .$state."#wechat_redirect"; header("Location: $wxurl"); } public function wxBack(){ if($_GET['state']!=$_SESSION["wx_state"]){ echo 'sorry,网络请求失败...'; exit("5001"); } $url='https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$this->appID.'&secret='.$this->appSecret.'&code='.$_GET['code'].'&grant_type=authorization_code'; $arr = curl_get_contents($url); //得到 access_token 与 openid $url='https://api.weixin.qq.com/sns/userinfo?access_token='.$arr['access_token'].'&openid='.$arr['openid'].'&lang=zh_CN'; $user_info = curl_get_contents($url); $this->dealWithWxLogin($user_info); } /** * 根据微信授权用户的信息 进行下一步的梳理 * @param $user_info */ public function dealWithWxLogin($user_info){ //TODO 数据处理 var_dump($user_info); die; }
3.前端显示
https://https://blog.csdn.net/u011415782/article/details/open.weixin.qq.com/connect/qrconnect?appid=wxbd961b2a6b7b2963&redirect_uri=http%3A%2F%2Fwww.52zhenmi.com%2FHome%2FLogin%2FwxBack&response_type=code&scope=snsapi_login&state=204b244a5051207d1987a95f4a7e42c1#wechat_redirect四、总结
openID
和 UnionID
可存储数据库进行后期业务的处理.附录
您可能感兴趣的文章:
123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..路人 在
php中使用hyperf框架调用讯飞星火大模型实现国内版chatgpt功能示例中评论 教程很详细,如果加个前端chatgpt对话页面就完美了..Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号