• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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

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

  网上有一些获取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需要用户手动授权,这样用户只需一次授权以后即可“无痕登陆”)

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
测开之路四十五:Django之最小程序发布时间:2022-07-18
下一篇:
微信小程序发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap