浅谈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 相关文章推荐
PHP怎样调用MSSQL的存储过程
Oct 09 PHP
PHP 编程请选择正确的文本编辑软件
Dec 21 PHP
php 什么是PEAR?(第二篇)
Mar 19 PHP
Yii框架登录流程分析
Dec 03 PHP
php自动给网址加上链接的方法
Jun 02 PHP
php上传功能集后缀名判断和随机命名(强力推荐)
Sep 10 PHP
PHP模块化安装教程
Jun 01 PHP
PHP基于接口技术实现简单的多态应用完整实例
Apr 26 PHP
php出租房数据管理及搜索页面
May 23 PHP
在laravel中使用Symfony的Crawler组件分析HTML
Jun 19 PHP
PHP策略模式定义与用法示例
Jul 27 PHP
使用laravel的migrate创建数据表的方法
Sep 30 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
php学习 字符串课件
2008/06/15 PHP
php中设置多级目录session的问题
2011/08/08 PHP
php根据操作系统转换文件名大小写的方法
2014/02/24 PHP
tagName的使用,留一笔
2006/06/26 Javascript
JavaScript高级程序设计 阅读笔记(十八) js跨平台的事件
2012/08/14 Javascript
nullJavascript中创建对象的五种方法实例
2013/05/07 Javascript
Ext中下拉列表ComboBox组件store数据格式用法介绍
2013/07/15 Javascript
js截取字符串的两种方法及区别详解
2013/11/05 Javascript
JQGrid的用法解析(列编辑,添加行,删除行)
2013/11/08 Javascript
js实现动态改变字体大小代码
2014/01/02 Javascript
使用ajax+jqtransform实现动态加载select
2014/12/01 Javascript
JavaScript 学习笔记之操作符
2015/01/14 Javascript
D3.js实现直方图的方法详解
2016/09/25 Javascript
JS正则子匹配实例分析
2016/12/22 Javascript
jQuery基于正则表达式的表单验证功能示例
2017/01/21 Javascript
fullCalendar中文API官方文档
2017/02/07 Javascript
JavaScript 字符串数字左补位,右补位,取固定长度,截位扩展函数代码
2017/03/25 Javascript
关于使用axios的一些心得技巧分享
2017/07/02 Javascript
Python实现国外赌场热门游戏Craps(双骰子)
2015/03/31 Python
Python中的数据对象持久化存储模块pickle的使用示例
2016/03/03 Python
python实现远程控制电脑
2019/05/23 Python
python提取log文件内容并画出图表
2019/07/08 Python
python-视频分帧&多帧合成视频实例
2019/12/10 Python
Python类如何定义私有变量
2020/02/03 Python
Python 爬虫的原理
2020/07/30 Python
python中逻辑与或(and、or)和按位与或异或(&、|、^)区别
2020/08/05 Python
Skyscanner加拿大:全球旅行搜索平台
2018/11/19 全球购物
哪些情况下不应该使用索引
2015/07/20 面试题
接口的多继承会带来哪些问题
2015/08/17 面试题
什么是SCM(软件配置管理)
2014/08/16 面试题
德语专业求职信
2014/03/12 职场文书
财政专业大学生职业生涯规划书
2014/09/17 职场文书
2015年度个人教学工作总结
2015/05/20 职场文书
建党伟业电影观后感
2015/06/01 职场文书
离职员工给领导和同事的感谢信
2015/11/03 职场文书
nginx常用命令放入shell脚本详解
2021/03/31 Servers