如何用PHP实现网站应用微信登录功能?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1775个文字,预计阅读时间需要8分钟。
本文实例讲述了PHP实现网站应用微信登录功能。分享给广大开发者参考,具体如下:
背景:近期进行PC端的网站开发,需要使用微信授权登录功能。
步骤:
1.在微信开放平台注册账号并创建应用。
2.获取应用的AppID和AppSecret。
3.在网站中引入微信JS-SDK。
4.在登录页面添加微信登录按钮。
5.用户点击登录按钮后,跳转到微信授权页面。
6.用户在微信授权页面同意授权后,微信会回调到网站指定的URL。
7.网站根据回调参数获取用户信息,完成登录。
总结:
通过以上步骤,成功实现了PHP网站应用微信登录功能。在开发过程中,需要注意以下几点:1.确保微信开放平台应用的安全设置正确。
2.在回调URL中处理用户信息获取和登录逻辑。
3.优化用户体验,提高网站安全性。
本文实例讲述了PHP实现网站应用微信登录功能。分享给大家供大家参考,具体如下:
背景
- 近期进行 PC 端的网站开发,需要用到微信授权登录,考虑到前期手机端已经获得了大量的微信用户群,现在想着进行资源整合,满足同一个微信用户的数据同步
一、开发须知
1.概念区分
- 因为接触到微信开发的知识,必然会接触
OpenID与UnionID的使用,以下为微信官方文档的的介绍,请注意区分:
- 在关注者与公众号产生消息交互后,公众号可获得关注者的
OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的。对于不同公众号,同一用户的OpenID不同)。- 公众号可通过相应接口来根据
OpenID获取用户基本信息,包括昵称、头像、性别、所在城市、语言和关注时间。- 请注意,如果开发者有在多个公众号,或在公众号、移动应用之间统一用户帐号的需求,需要前往微信开放平台(
open.weixin.qq.com)绑定公众号后,才可利用UnionID机制来满足上述需求。
- 简单概括来讲:
OpenID是普通用户的标识,对当前开发者帐号唯一。一个OpenID对应一个公众号。UnionID是用户统一标识。针对一个 微信开放平台帐号 下的应用,同一用户的UnionID是唯一的。
2.归纳整理
- 绕了这个圈,也就是说,微信公众号开发与微信开发平台开发是有差别的
- 想让同一个微信用户使用不同平台(如PC端、app、微信小程序等)的网站登录,需要进行账号绑定,而这个绑定的账号不能以
OpenID区分,而需要用UnionID区分。
3.典型问题
- 附录一个常见的设计问题,主要在于开发前的知识使用不够全面,而造成后续拓展的影响,当然,这也是我遇到的问题,希望可以给各位敲个警钟。
所以:当你出现这种情况,可以参考下面的指导进行 unionID 数据的后期获取 获取用户基本信息(UnionID机制)
- 个人参考代码如下:
/** * 根据用户已获得的 openID 获取其他信息 (主要为 unionID) */ public function getUnionidByOpenid($openID = ''){ $url = "api.weixin.qq.com/cgi-bin/user/info?access_token=" .$this->getaccesstoken() ."&openid=".$openID."&lang=zh_CN"; $jsonRes = $this->www.52zhenmi.com/Home/Login/wxBack', //微信用户使用微信扫描二维码并且确认登录后,PC端跳转路径 ),
2.核心代码
- 具体代码,请参考路径 “zmPro\Application\Home\Controller\LoginController.class.php”
public function wxIndex(){ //--微信登录-----生成唯一随机串防CSRF攻击 $state = md5(uniqid(rand(), TRUE)); $_SESSION["wx_state"] = $state; //存到SESSION $callback = urlencode($this->callBackUrl); '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 = "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='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='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.前端显示
- 根据官方文档的介绍,既可以直接访问授权扫码界面,也可以进行自定义设计
- 估计本人脑抽,嵌套登录扫码的功能整了半天也没实现,在此只好使用默认跳转。
-
通过点击上图中的微信图标,直接跳转如下链接
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 -
显示效果如下:
- 扫描登录成功后进行页面跳转
四、总结
- 小程序官方提供了 UnionID机制说明,可进行对比参考
-
网上看到一篇不错的文章,建议参考:微信公众号用户与网站用户的绑定方案
-
总结小点:
- 1.根据上面功能实现的最后,可以获取登录用户的信息,而其中的
openID和UnionID可存储数据库进行后期业务的处理.- 2.在下阐述能力有限,建议多参考官方开发文档,谷歌前辈的干货经验…
附录
- 源代码参考
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP微信开发技巧汇总》、《php curl用法总结》、《PHP网络编程技巧总结》、《php字符串(string)用法总结》、《PHP中json格式数据操作技巧汇总》及《PHP针对XML文件操作技巧总结》
希望本文所述对大家PHP程序设计有所帮助。
本文共计1775个文字,预计阅读时间需要8分钟。
本文实例讲述了PHP实现网站应用微信登录功能。分享给广大开发者参考,具体如下:
背景:近期进行PC端的网站开发,需要使用微信授权登录功能。
步骤:
1.在微信开放平台注册账号并创建应用。
2.获取应用的AppID和AppSecret。
3.在网站中引入微信JS-SDK。
4.在登录页面添加微信登录按钮。
5.用户点击登录按钮后,跳转到微信授权页面。
6.用户在微信授权页面同意授权后,微信会回调到网站指定的URL。
7.网站根据回调参数获取用户信息,完成登录。
总结:
通过以上步骤,成功实现了PHP网站应用微信登录功能。在开发过程中,需要注意以下几点:1.确保微信开放平台应用的安全设置正确。
2.在回调URL中处理用户信息获取和登录逻辑。
3.优化用户体验,提高网站安全性。
本文实例讲述了PHP实现网站应用微信登录功能。分享给大家供大家参考,具体如下:
背景
- 近期进行 PC 端的网站开发,需要用到微信授权登录,考虑到前期手机端已经获得了大量的微信用户群,现在想着进行资源整合,满足同一个微信用户的数据同步
一、开发须知
1.概念区分
- 因为接触到微信开发的知识,必然会接触
OpenID与UnionID的使用,以下为微信官方文档的的介绍,请注意区分:
- 在关注者与公众号产生消息交互后,公众号可获得关注者的
OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的。对于不同公众号,同一用户的OpenID不同)。- 公众号可通过相应接口来根据
OpenID获取用户基本信息,包括昵称、头像、性别、所在城市、语言和关注时间。- 请注意,如果开发者有在多个公众号,或在公众号、移动应用之间统一用户帐号的需求,需要前往微信开放平台(
open.weixin.qq.com)绑定公众号后,才可利用UnionID机制来满足上述需求。
- 简单概括来讲:
OpenID是普通用户的标识,对当前开发者帐号唯一。一个OpenID对应一个公众号。UnionID是用户统一标识。针对一个 微信开放平台帐号 下的应用,同一用户的UnionID是唯一的。
2.归纳整理
- 绕了这个圈,也就是说,微信公众号开发与微信开发平台开发是有差别的
- 想让同一个微信用户使用不同平台(如PC端、app、微信小程序等)的网站登录,需要进行账号绑定,而这个绑定的账号不能以
OpenID区分,而需要用UnionID区分。
3.典型问题
- 附录一个常见的设计问题,主要在于开发前的知识使用不够全面,而造成后续拓展的影响,当然,这也是我遇到的问题,希望可以给各位敲个警钟。
所以:当你出现这种情况,可以参考下面的指导进行 unionID 数据的后期获取 获取用户基本信息(UnionID机制)
- 个人参考代码如下:
/** * 根据用户已获得的 openID 获取其他信息 (主要为 unionID) */ public function getUnionidByOpenid($openID = ''){ $url = "api.weixin.qq.com/cgi-bin/user/info?access_token=" .$this->getaccesstoken() ."&openid=".$openID."&lang=zh_CN"; $jsonRes = $this->www.52zhenmi.com/Home/Login/wxBack', //微信用户使用微信扫描二维码并且确认登录后,PC端跳转路径 ),
2.核心代码
- 具体代码,请参考路径 “zmPro\Application\Home\Controller\LoginController.class.php”
public function wxIndex(){ //--微信登录-----生成唯一随机串防CSRF攻击 $state = md5(uniqid(rand(), TRUE)); $_SESSION["wx_state"] = $state; //存到SESSION $callback = urlencode($this->callBackUrl); '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 = "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='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='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.前端显示
- 根据官方文档的介绍,既可以直接访问授权扫码界面,也可以进行自定义设计
- 估计本人脑抽,嵌套登录扫码的功能整了半天也没实现,在此只好使用默认跳转。
-
通过点击上图中的微信图标,直接跳转如下链接
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 -
显示效果如下:
- 扫描登录成功后进行页面跳转
四、总结
- 小程序官方提供了 UnionID机制说明,可进行对比参考
-
网上看到一篇不错的文章,建议参考:微信公众号用户与网站用户的绑定方案
-
总结小点:
- 1.根据上面功能实现的最后,可以获取登录用户的信息,而其中的
openID和UnionID可存储数据库进行后期业务的处理.- 2.在下阐述能力有限,建议多参考官方开发文档,谷歌前辈的干货经验…
附录
- 源代码参考
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP微信开发技巧汇总》、《php curl用法总结》、《PHP网络编程技巧总结》、《php字符串(string)用法总结》、《PHP中json格式数据操作技巧汇总》及《PHP针对XML文件操作技巧总结》
希望本文所述对大家PHP程序设计有所帮助。

