您的位置:首页 > 编程语言 > PHP开发

phpcms QQ互联无法正常登录

2015-05-29 15:07 666 查看
现在大家应该发现。所有phpcms的网站,QQ互联也就是QQ一键登录都用不了的。登陆报错,或者登陆成功后直接跳到首页。不知道大家发现一个问题没有,官方的phpcms.cn网站之前都是可以用QQ登陆的,现在也不行了,原因是腾讯有更新,而官方phpcms系统更新太慢,不知道那些大爷在干什么。

首页,我们来看看腾讯有啥子更新呢





[b]对于大家这个更新如果没玩过QQ互联的大家也许不懂,我来解释下[/b]





上图所示,左边是QQ互联申请的后台地址,右边是phpcms后台填写的回调地址。

phpcms回调地址必须填写http://网站域名/index.php?m=member&c=index&a=public_qq_loginnew才能使用

而现在呢,腾讯qq的回调地址不允许带参数,否则无法提交,并且要与phpcms地址的回调地址一致,才能使用。qq互联回调地址和phpcms管理中心的回调地址不一样导致qq登录报错:redirect uri is illegal(100010)

那么问题来了,phpcms必须要带参数才能使用,而腾讯带上参数又不让使用,这不是很矛盾吗。到底如何解决这个问题呢,肯定不能让腾讯修改规则,而phpcms官方更新太慢。今天下午我看网上有人搜索这个问题,自己研究了下,现在公布给大家

首页第一步,将腾讯和phpcms后台的qq回调地址统一设置成你自己的网站域名www.wfuyu.com(下面说明中,网站都以本网站www.wfuyu.com做说明,你自己填写的时候,写上你自己的网站域名即可)。

经过第一步后,点击自己网站上面的QQ登陆按钮,会显示登陆成功,并且登陆后直接返回了首页(其实没有登陆成功,只是读取了腾讯openid的数据,返回到了网站首页,phpcmss没有做任何登陆操作)

第二步,将第一步的中,腾讯qq和phpcms的网站回调地址改成www.wfuyu.com/qqcode

重复第一步登陆QQ,登陆成功后,返回首页,大家注意浏览器url地址为。www.wfuyu.com/qqcode?code=3CD919E33C50BAC0D6D56ABAC926CA62

现在接下来的目标是,将www.wfuyu.com/qqcode?code=3CD919E33C50BAC0D6D56ABAC926CA62 这个地址,指向http://www.wfuyu.com/index.php?m=member&c=index&a=public_qq_loginnew&code=3CD919E33C50BAC0D6D56ABAC926CA62

这样phpcms才会处理腾讯返回过来的qq信息

第三步,伪静态处理

将更目录下.htaccess文件 加入

RewriteCond %{QUERY_STRING} ^code=(.*)$

RewriteRule ^qqcode index.php?m=member&c=index&a=public_qq_loginnew&code=%1 [L]

这里不同的服务器规则不一样,我的是apache

现在大家明白第二步中URL为什么后台加个尾巴qqcode了吧,只是为了方便写伪静态而已,没有别的作用

经过第三步后,大家刷新自己的网站,用QQ登陆,可以显示登陆成功,也跳转到了补充信息页面。

说明:如果你到了这个步骤,如果登陆后页面是空百的

你的服务器可能因为file_get_contents无法请求https连接。

解决方案有3:

1.windows下的PHP,只需要到php.ini中把extension=php_openssl.dll前面的;删掉,重启服务就可以了。

2.linux下的PHP,就必须安装openssl模块,安装好了以后就可以访问了。

3.如果服务器你不能修改配置的话,那么就使用curl函数来替代file_get_contents函数,当然不是简单的替换,还有相应的参数配置才能正常使用curl函数。

我的网站就出现了空白,用网上搜索的方法一解决的,如果你网站不是空白,请忽略上面的文字,直接看下面图片吧,更坑爹呢





phpcms QQ登录无法正常登录

发布时间:2015-05-21 | 阅读次数:57次 | 分类:笔记
现在大家应该发现。所有phpcms的网站,QQ互联也就是QQ一键登录都用不了的。不知道大家发现一个问题没有,官方的phpcms.cn网站之前都是可以用QQ登陆的,现在也不行了,原因是腾讯有更新,而官方phpcms系统更新太慢,不知道那些大爷在干什么。

首页,我们来看看腾讯有啥子更新呢



对于大家这个更新如果没玩过QQ互联的大家也许不懂,我来解释下



上图所示,左边是QQ互联申请的后台地址,右边是phpcms后台填写的回调地址。

phpcms回调地址必须填写http://网站域名/index.php?m=member&c=index&a=public_qq_loginnew才能使用

而现在呢,腾讯qq的回调地址不允许带参数,否则无法提交,并且要与phpcms地址的回调地址一致,才能使用。qq互联回调地址和phpcms管理中心的回调地址不一样导致qq登录报错:redirect uri is illegal(100010)

那么问题来了,phpcms必须要带参数才能使用,而腾讯带上参数又不让使用,这不是很矛盾吗。到底如何解决这个问题呢,肯定不能让腾讯修改规则,而phpcms官方更新太慢。今天下午我看网上有人搜索这个问题,自己研究了下,现在公布给大家

首页第一步,将腾讯和phpcms后台的qq回调地址统一设置成你自己的网站域名www.wfuyu.com(下面说明中,网站都以本网站www.wfuyu.com做说明,你自己填写的时候,写上你自己的网站域名即可)。

经过第一步后,点击自己网站上面的QQ登陆按钮,会显示登陆成功,并且登陆后直接返回了首页(其实没有登陆成功,只是读取了腾讯openid的数据,返回到了网站首页,phpcmss没有做任何登陆操作)

第二步,将第一步的中,腾讯qq和phpcms的网站回调地址改成www.wfuyu.com/qqcode

重复第一步登陆QQ,登陆成功后,返回首页,大家注意浏览器url地址为。www.wfuyu.com/qqcode?code=3CD919E33C50BAC0D6D56ABAC926CA62

现在接下来的目标是,将www.wfuyu.com/qqcode?code=3CD919E33C50BAC0D6D56ABAC926CA62 这个地址,指向http://www.wfuyu.com/index.php?m=member&c=index&a=public_qq_loginnew&code=3CD919E33C50BAC0D6D56ABAC926CA62

这样phpcms才会处理腾讯返回过来的qq信息

第三步,伪静态处理

将更目录下.htaccess文件 加入

RewriteCond %{QUERY_STRING} ^code=(.*)$

RewriteRule ^qqcode index.php?m=member&c=index&a=public_qq_loginnew&code=%1 [L]

这里不同的服务器规则不一样,我的是apache

现在大家明白第二步中URL为什么后台加个尾巴qqcode了吧,只是为了方便写伪静态而已,没有别的作用



经过第三步后,大家刷新自己的网站,用QQ登陆,可以显示登陆成功,也跳转到了补充信息页面。


说明:如果你到了这个步骤,如果登陆后页面是空百的

你的服务器可能因为file_get_contents无法请求https连接。

解决方案有3:

1.windows下的PHP,只需要到php.ini中把extension=php_openssl.dll前面的;删掉,重启服务就可以了。

2.linux下的PHP,就必须安装openssl模块,安装好了以后就可以访问了。

3.如果服务器你不能修改配置的话,那么就使用curl函数来替代file_get_contents函数,当然不是简单的替换,还有相应的参数配置才能正常使用curl函数。

我的网站就出现了空白,用网上搜索的方法一解决的,如果你网站不是空白,请忽略上面的文字,直接看下面图片吧,更坑爹呢





尼玛,好不容到了这步了,为啥用户名和昵称是乱码。

解决方法:
在phpcms/modules/member/index.php 大概第1348行
$connect_username = $user['nickname']; 改成$connect_username = $user;
if里面两个地方都要改





然后再重复登陆操作





这样就正常了。按道理来说,这里注册后,绑定QQ就能登陆了。可是,尼玛,不管输入什么都是说系统已经存在!!





真的是一步一个坑啊,是谁说phpcms的bug是开源php最少的,告诉我,我保证不打算他!!

经过反复测试研究

上述ajaxValidator表单验证出错的原因是,启用了伪静态,导致ajax提交地址出错

修改方法:

打开网站文件/templates/default/member/connect.html

找到下面代码

//修改用户名验证,大概在201行
url : "",
data :"m=member&c=index&a=public_checkname_ajax",
替换成
url : "http://www.wfuyu.com/index.php?m=member&c=index&a=public_checkname_ajax",
data :"http://www.wfuyu.com/index.php?m=member&c=index&a=public_checkname_ajax",

//修改用邮箱验证,大概在221行
url : "",
data :"m=member&c=index&a=public_checkemail_ajax",
替换成
url : "http://www.wfuyu.com/index.php?m=member&c=index&a=public_checkemail_ajax",
data :"http://www.wfuyu.com/index.php?m=member&c=index&a=public_checkemail_ajax",

//修改用昵称验证,大概在238行
url : "",
data :"m=member&c=index&a=public_checknickname_ajax",
替换成
url : "http://www.wfuyu.com/index.php?m=member&c=index&a=public_checknickname_ajax",
data :"http://www.wfuyu.com/index.php?m=member&c=index&a=public_checknickname_ajax",


总共需要提供的地方有三个,分别是用户名验证,邮箱验证,昵称验证,代码分别在第202行,第221行和238行左右



到这里,phpcms的QQ互联就可以正常使用了,如果还有疑问,可以随时给我留意,或者关注程序员人生www.wfuyu.com 官方网站。转载请说明出处,本文由程序员人生网独家研究资料。原文地址http://www.wfuyu.com/biji/24097.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: