PHP(TP5)获取微信小程序unionId

  最近作一个项目,微信小程序、Android、IOS同步进行开发,小程序从微信内部直接登陆,Android、IOS也须要用微信登录,为了肯定同一用户的身份,须要使用到微信的unionId。php

  将小程序、APP都绑定到同一微信公众平台后,Android、IOS能直接获取到unionId,但在小程序上获取unionId须要用到后端解密。html

  网上有一些获取unionId的方法试过一些,有点复杂,因此我总结出一个比较简单的。前端

  网上下载微信官方提供的PHP的demo,会有3个文件:数据库

  其实在demo里已经有用法了,代码很简单明了:写入appid、sessionKey、encryptedData、iv四个参数便可。除了appid是固定的外,其余都由前端传过来。小程序

  这个demo只是返回解密unionId成功,即code为0或是其余错误code,真正的unionId值,是wxBizDataCrypt.php里的$data的值,能够改成返回该值后端

  TP5实现代码:微信小程序

//获取微信小程序unionId
    public function getUnionId() { $sessionKey = Request::instance()->param("sessionKey", '', 'htmlspecialchars'); $encryptedData = Request::instance()->param("encryptedData", '', 'htmlspecialchars'); $iv = Request::instance()->param("iv", '', 'htmlspecialchars'); $appid = 'wxxxxxxxxxxxxxx'; //引入文件
        vendor('wxunionid.wxBizDataCrypt'); $pc = new \WXBizDataCrypt($appid, $sessionKey); $unionId = $pc->decryptData($encryptedData, $iv, $data); return $unionId; }

  因为小程序上一个用户对一个小程序的openid是相同的,unionId也相同,咱们每次解析unionId后能够将openid和unionId保存在数据库,用unionId做为用户惟一表示,小程序登录的时候先使用openid查找数据库是否有openid对应的unionId值,有则直接返回用户数据进行登录(目前openid能够直接获取,可是unionId须要用户手动受权,这样用户只需一次受权之后便可“无痕登录”)微信

相关文章
相关标签/搜索