很多网站为了方便用户,提高用户体验,提升注册转换率。很多网站都使用了第三方登录,比如QQ、微信、微博等等,Chevereto也内置了HybridAuth多社交网络登陆PHP库。但由于Chevereto的回调代码规范和国内规范不统一,导致在使用QQ、微信等登录时会出现报错的情况,如下图。
那如何解决呢,以QQ登录为例下面是详细步骤:
一、前期准备
1、注册开发者账号:登录QQ互联官网(https://connect.qq.com/),建议使用企业公共QQ号注册6。需提交营业执照/个人身份信息,完成实名认证。
2、创建应用:在管理中心选择【创建应用】,填写:
- 选择网站分类、网站名称(需与ICP备案一致)、网站简介
- 网站域名(需已完成ICP备案)
- 回调地址(格式:
域名/路径
,多个用分号隔开) - 上传100×100像素的网站LOGO
3、获取凭证:审核通过后,获得App ID和App Key,用于后续接口调用
二、Chevereto 开启QQ登录
进入仪表台,点击【设置】-【登录供应商】。找到QQ,选择启用,填写前面获得App ID和App Key。到这里设置部分就完成了,理论上到这里chevereto就可以通过QQ登陆了。
三、修改Chevereto文件(修改之前请做好备份,如若造成的损失由您自己负责!!!)
然而 Chevereto 默认的回调路径可能与国内平台要求的格式不一致,导致“错误代码100010”报错。根据腾讯对QQ互联强制要求,chevereto的默认回调地需要从原来的(https://你的网址/connect/qq/)更换为(https://你的网址/connect/qq/callback)。下面是修改方法,修改前请对网站进行备份,如造成的损失由您自己负责!!!!
1、修改connect.php文件
文件路径:【你的网址/app/legacy/routes/connect.php】,第52行左右
从 ....... $config = [ 'callback' => get_public_url('connect/' . $doing) . '/', 'providers' => [], ]; ........ 修改为 ....... $config = [ 'callback' => get_public_url('connect/' . $doing) . '/callback', 'providers' => [], ]; ........
2、修改login-providers.php文件
文件路径:【你的网址/content/legacy/themes/Peafowl/views/dashboard/settings/login-providers.php】,第86行左右
从 '%connectUrlValue%' => get_base_url('connect/' . $name . '/', true), 修改为 '%connectUrlValue%' => get_base_url('connect/' . $name . '/callback', true),
这时候我们打开后台就可以看到回调地址已经变得合规的(https://你的网址/connect/qq/callback)
2、修改qq.php 文件
绑定完成后,猫爷儿迫不及待的使用qq进行登录,结构又是一个报错。
赶紧打开后台的调试模式进行查看,发现是Hybridauth 的 QQ 登录适配器的 bug。代码用了 responseDataFormat
这样一个未定义的常量,但实际并没有这个常量的定义。解决办法就是把 responseDataFormat
换成字符串 'json'
或已定义常量名。
文件路径:【你的网址/app/vendor/hybridauth/hybridauth/src/Provider/qq.php】,第116行左右
从 'format' => $this>responseDataFormat 修改为 'format' => 'json'
在测试一下,完美大功告成。后续猫爷儿添加量GitHub登录方式,一样可行。
评论(0)