本文实例讲述了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 = "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 ''; } }
内容版权声明:除非注明,否则皆为本站原创文章。