38180309fd1bf59

很多网站为了方便用户,提高用户体验,提升注册转换率。很多网站都使用了第三方登录,比如QQ、微信、微博等等,Chevereto也内置了HybridAuth多社交网络登陆PHP库。但由于Chevereto的回调代码规范和国内规范不统一,导致在使用QQ、微信等登录时会出现报错的情况,如下图。eedb9f23ae0cb68

那如何解决呢,以QQ登录为例下面是详细步骤:

一、前期准备

1、注册开发者账号:登录QQ互联官网(https://connect.qq.com/),建议使用企业公共QQ号注册6。需提交营业执照/个人身份信息,完成实名认证。

2、创建应用:在管理中心选择【创建应用】,填写:

  • 选择网站分类、网站名称(需与ICP备案一致)、网站简介
  • 网站域名(需已完成ICP备案)
  • 回调地址(格式:域名/路径,多个用分号隔开)
  • 上传100×100像素的网站LOGO

3、获取凭证:审核通过后,获得App ID和App Key,用于后续接口调用

9265edf9c20b8df5aac24924261692

二、Chevereto 开启QQ登录

进入仪表台,点击【设置】-【登录供应商】。找到QQ,选择启用,填写前面获得App ID和App Key。到这里设置部分就完成了,理论上到这里chevereto就可以通过QQ登陆了。344c34e669b95c2

三、修改Chevereto文件(修改之前请做好备份,如若造成的损失由您自己负责!!!)

然而 Chevereto 默认的回调路径可能与国内平台要求的格式不一致,导致“错误代码100010”报错。根据腾讯对QQ互联强制要求,chevereto的默认回调地需要从原来的(https://你的网址/connect/qq/)更换为(https://你的网址/connect/qq/callback)。下面是修改方法,修改前请对网站进行备份,如造成的损失由您自己负责!!!!

2dde2af67c55f68

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)

90184ac16fc8d79

2、修改qq.php 文件

绑定完成后,猫爷儿迫不及待的使用qq进行登录,结构又是一个报错。8eda4481228715a

赶紧打开后台的调试模式进行查看,发现是Hybridauth 的 QQ 登录适配器的 bug。代码用了 responseDataFormat 这样一个未定义的常量,但实际并没有这个常量的定义。解决办法就是把 responseDataFormat 换成字符串 'json' 或已定义常量名。f51bfee5139232e

文件路径:【你的网址/app/vendor/hybridauth/hybridauth/src/Provider/qq.php】,第116行左右


 'format' => $this>responseDataFormat
修改为
'format' => 'json'

在测试一下,完美大功告成。后续猫爷儿添加量GitHub登录方式,一样可行。6e628d500f8c7d3

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。