php sdk qq 错误码,QQ互联登录PHP-SDK invalid openid错误—解决方法

fayhot游戏账号改用社交登陆,支持微博,腾讯qq,人人网账号登陆。微博和人人的sdk都比较规范,调用方式和流程也比较一致。

QQ的就。。。流氓本色。难用到无以复加。基本没法用。

一上来就出问题。

部署了PHP-SDK之后,出现有时能登录,有时不能登录的情况,错误提示是:-1 client request’s parameters are invalid, invalid openid

当时就傻眼了,情不自禁的冒出一句,”我操”,都不是”我擦”.

从readme到帮助文档,再到install和config配置以及example,这尼玛那里是个sdk啊,这根本就是个“腾讯临时工”写的测试脚本吧。。。

为了兼容人人和微博的流程与调用方式,重写了qq联合登陆的sdk,自己实现了oauth2.0授权。

但是针对标题中的问题,解决起来,其实比较简单。关键是文档和编码规范太差劲,才让人觉得望而生畏。

尤其是画蛇添足的弄一个config.inc和自动文件存储授权认证中间code,token等,简直丧尽天良,代码强耦合,改都没法改。

QQ和人人、微博社交正好登陆稍有区别,是在授权后并不返回用户uid,取而代之是返回openid,用于标示用户身份。

通过openid,access_token,appid来读取接口信息,比如get_user_info等等。

解决标题中说的问题,其实很简单:

require_once("API/qqConnectAPI.php");

$qc = new QC();

$acs = $qc->qq_callback();//callback主要是验证 code和state,返回token信息,并写入到文件中存储,方便get_openid从文件中度

$oid = $qc->get_openid();//根据callback获取到的token信息得到openid,所以callback必须在openid前调用

$qc = new QC($acs,$oid);

$uinfo = $qc->get_user_info();

至于为什么很多人都会遇到这个问题,就更简单了,还是由于上面提到的那份丧尽天良的examples的demo.

QQ的sdk会自动检测用户是否填写认证信息,没有填写的话就自动去文件里读取。而example里没有

$qc = new $qc->qq_openid();//没有获取到openid,请求api接口,所以会返回error,invalid openid 原帖地址:http://blog.fayhot.com/?p=820

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值