QQ互联登录PHP-SDK invalid openid错误—解决方法

发布:2017-06-14 19:32   点击:91次   回复:0

http://blog.csdn.net/q356309936/article/details/11829205
QQ互联登录PHP-SDK invalid openid错误—解决方法

部署了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等等。

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

[php] view plain copy
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里没有


[php] view plain copy
$qc = new $qc->qq_openid();//没有获取到openid,请求api接口,所以会返回error,invalid openid

原帖地址:http://blog.fayhot.com/?p=820
状态:开放 Text 推荐   bug编号: ---
回复(0条)   >>我来回复 回复列表
发布:2017-08-12 15:21 1# 爱迪生撒多撒大

打 大时代阿萨德

by: aDESA   聊天号: 213213213213 Makedown

关于 GitHub 导航 部门 反馈

提示:`/chn.php`入口数据仅为演示功能,不构成任何交易凭证,也不承担相关风险和责任!

Copyright © 2011-2018 xxxxx.com All rights reserved. 粤ICP备07020797号.

Done:161.795/52.824(ms); 6(queries)/2.417(MB); Tpl:faqs/detail; Upd:2018-10-20 19:41:03