浅谈PHP接入(第三方登录)QQ登录 OAuth2.0 过程中遇到的坑


Posted in PHP onOctober 13, 2017

前言

绝大多数网站都集成了第三方登录,降低了注册门槛,增强了用户体验。最近看了看 QQ 互联上 QQ 登录的接口文档。接入 QQ 登录的一般流程呢,是这样的:先申请开发者 -> 然后创建应用(拿到一组 AppId 和 AppKey)-> 获取 access_token -> 获取 openid -> 调用 openApi 访问或修改用户信息。

然而,从申请个人开发者开始,坑就来了。

1. 申请(个人)开发者

QQ 互联中申请开发者信息的页面,一些重点太过简陋,缺失细节,比如身份证正面照的相关拍摄细节完全没有描述,我当时就直接上传了这个“身份证正面照”,然后等了 3 天, 3 天后收到腾讯开放平台的邮件通知说审核没通过,需要手持身份证。好吧,那就重拍~~。问了客服之后确定了这个“手持身份证”拍摄的正确姿势,然后我换了平台,在腾讯开放平台中改了我的申请信息,重新上传了身份证,我注意到上传框的下面有拍摄提示,看了下是个小姐姐的手持身份证照片,挺好看的,提示友好,比 QQ 互联上的申请页面好多了。又过了 2 天之后审核通过。

所以,申请开发者的话,最好还是在腾讯开放平台申请吧,信息相对详细,也更友好,QQ 互联给人感觉好久没维护了。

2. 接口调用——发布微博

(1)发布微博的接口 add_t:必需参数为 content 微博内容。调用时必须以数组键值对方式把参数传递进去,否则会报错说没提供参数。

$qc = new QC('你的access_token', '你的openid');
$weibo = [
 'content' => '微博内容'
];
$result = $qc->add_t($weibo);

(2)发布带图片微博的接口 add_pic_t:必需参数为 content 微博内容,和 pic 微博图片。调用时同样以键值对方式传参。而且,图片是以二进制流的形式上传的。而文档中有关它的接口示例,我始终没找到。最后,我采用了 CURLFIle 类实现图片流上传。

$qc = new QC('你的access_token', '你的openid');
$weibo = [
 'content' => '微博内容',
 'pic' => new CURLFile('要上传的图片路径')
];
$result = $qc->add_pic_t($weibo);

注意到 pic 参数值为 CURLFile 类的实例(图片路径最好是绝对路径)。网上有些资料介绍了 file(image_path) 和 file_get_contents(image_path) 方式设置 pic 参数,但我这里都没有成功(微博发布成功,但没有图片)。

小结

主要的坑就这两个,审核平台问题和微博图片上传问题。以后可能还会用,所以在这里作以记录,备忘。

以上这篇浅谈PHP接入(第三方登录)QQ登录 OAuth2.0 过程中遇到的坑就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
关于ob_get_contents(),ob_end_clean(),ob_start(),的具体用法详解
Jun 24 PHP
常见php数据文件缓存类汇总
Dec 05 PHP
php 5.6版本中编写一个PHP扩展的简单示例
Jan 20 PHP
百度工程师讲PHP函数的实现原理及性能分析(一)
May 13 PHP
PHP cURL初始化和执行方法入门级代码
May 28 PHP
php防止CC攻击代码 php防止网页频繁刷新
Dec 21 PHP
php禁用函数设置及查看方法详解
Jul 25 PHP
PHP基本语法实例总结
Sep 09 PHP
ThinkPHP发送邮件示例代码
Oct 08 PHP
php preg_match的匹配不同国家语言实例
Dec 29 PHP
Yii2汉字转拼音类的实例代码
Apr 18 PHP
PHP新特性详解之命名空间、性状与生成器
Jul 18 PHP
PHP长网址与短网址的实现方法
Oct 13 #PHP
如何直接访问php实例对象中的private属性详解
Oct 12 #PHP
thinkphp中的多表关联查询的实例详解
Oct 12 #PHP
laravel 5异常错误:FatalErrorException in Handler.php line 38的解决
Oct 12 #PHP
利用PHP实现开心消消乐的算法示例
Oct 12 #PHP
深入理解PHP中mt_rand()随机数的安全
Oct 12 #PHP
php表单习惯用的正则表达式
Oct 11 #PHP
You might like
thinkPHP使用pclzip打包备份mysql数据库的方法
2016/04/30 PHP
解决出现SoapFault (looks like we got no XML document)的问题
2017/06/24 PHP
PHP生成二维码与识别二维码的方法详解【附源码下载】
2019/03/07 PHP
php使用curl伪造浏览器访问操作示例
2019/09/30 PHP
Extjs列表详细信息窗口新建后自动加载解决方法
2010/04/02 Javascript
原来Jquery.load的方法可以一直load下去
2011/03/28 Javascript
javascript数组的使用
2013/03/28 Javascript
在JS数组特定索引处指定位置插入元素的技巧
2014/08/24 Javascript
JavaScript组件焦点与页内锚点间传值的方法
2015/02/02 Javascript
jquery实现表单验证并阻止非法提交
2015/07/09 Javascript
值得分享的Bootstrap Ace模板实现菜单和Tab页效果
2015/12/30 Javascript
Node.js的MongoDB驱动Mongoose基本使用教程
2016/03/01 Javascript
快速掌握Node.js模块封装及使用
2016/03/21 Javascript
AngularJS 面试题集锦
2016/09/06 Javascript
微信小程序 倒计时组件实现代码
2016/10/24 Javascript
微信小程序工具函数封装
2019/10/28 Javascript
详解Vue后台管理系统开发日常总结(组件PageHeader)
2019/11/01 Javascript
浅谈Vue中render中的h箭头函数
2019/11/07 Javascript
微信小程序实现打卡签到页面
2020/09/21 Javascript
[34:10]Secret vs VG 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.24
2019/09/10 DOTA
在Django框架中运行Python应用全攻略
2015/07/17 Python
Python实现列表转换成字典数据结构的方法
2016/03/11 Python
Python+微信接口实现运维报警
2016/08/27 Python
Python2.X/Python3.X中urllib库区别讲解
2017/12/19 Python
Python 进程之间共享数据(全局变量)的方法
2019/07/16 Python
Django之编辑时根据条件跳转回原页面的方法
2019/08/21 Python
Python2与Python3的区别点整理
2019/12/12 Python
django实现后台显示媒体文件
2020/04/07 Python
Python中的特殊方法以及应用详解
2020/09/20 Python
Python+OpenCV检测灯光亮点的实现方法
2020/11/02 Python
党员干部承诺书
2014/03/25 职场文书
买卖车协议书
2014/04/21 职场文书
出生证明范本
2015/06/15 职场文书
2016年春节慰问信息大全
2015/11/30 职场文书
浅谈如何提高PHP代码质量之单元测试
2021/05/28 PHP
深入讲解数据库中Decimal类型的使用以及实现方法
2022/02/15 MySQL