PHP实现QQ登录的开原理和实现过程


Posted in PHP onFebruary 04, 2018

第三方登录,就是使用大家比较熟悉的比如QQ、微信、微博等第三方软件登录自己的网站,这可以免去注册账号、快速留住用户的目的,免去了相对复杂的注册流程。下边就给大家讲一下怎么使用PHP开发QQ登录的功能。

1、进入QQ互联官网进行登录(可以使用自己的QQ或者重新注册一个QQ号作为咱们项目的单独QQ进行管理),地址:https://connect.qq.com/

2、点击“应用管理”进入QQ互联管理中心,在这里进行相关应用的创建,分为 网站应用 和 移动应用。选择自己想要的应用进行资料的填写(审核需要等待大概7天左右),审核通过你将获得APP ID

和APP Key,请拿小本本记上!请拿小本本记上!请拿小本本记上!(重要的事情说三遍!!!)

3、审核通过获得相关接口:get_user_info。

4、下载QQ互联相关的demo http://wiki.connect.qq.com/sdk%E4%B8%8B%E8%BD%BD 我下载的是 PHP SDK v2.1

5、仔细观察sdk我们会发现它包含有4个文件夹、2个文件,其中最主要的是API文件夹,其余的我觉得都可以忽略不看(你看也没事),按照这篇文档一步一步往下进行,你就可以实现登录的功能。

PHP实现QQ登录的开原理和实现过程

6、将API文件夹拷贝到你的项目里,至于拷贝到项目的哪个文件夹,只要你能引入就行,看你心情来就可以,前期准备做好,接下来就是写代码了。

7、打开你拷贝到项目里的API文件夹,其中有一个comm文件夹,再次打开comm你就能看到一个叫 inc.php 的家伙,打开它!将上文记在你小本本上的APPID 和 APPKEY填写到相关位置,大概形式是这样的

<?php die('forbidden'); ?>
{"appid":"你的appid","appkey":"你的appkey","callback":"你的网站回调域","scope":"get_user_info"}

8、代码如下

<?php
/**
 * Created by PhpStorm.
 * User: qichao
 * Date: 2018/1/31
 * Time: 下午7:22
 */
namespace wechat\controllers;


use wechat\common\BaseController;

require(__DIR__ . '/../tools/API/qqConnectAPI.php'); //引入QQ互联SDK,这是按照我自己项目的路径引入的。

class QqloginController extends BaseController{
 //登录方法
 public function actionQqlogin(){
  $qc = new \QC();
  $qc->qq_login();
 }
 //这个方法是当你通过QQ登录成功以后想要跳转回来的地址,比如你想登录成功以后跳转到百度,那你把下文的$url改为百度链接即可!
 public function actionCallback(){
  header("Content-type: text/html; charset=utf-8");
/* 这里请根据你的项目开发需求(比如获取登录用户的昵称、头像、年龄等等),进行相关代码的开发,具体数据获取方法,请查阅QQ互联文档
  $qc = new \QC();
  $access_token = $qc->qq_callback();

  $openid = $qc->get_openid();
  */
  $url = "http://wechat.xxx.cn/index.php?r=cms/home";
  header("Location:".$url);
  exit();
 }
}

至此呢你的整个流程就走完了,简单吧!!!整个功能流程类似下图:

PHP实现QQ登录的开原理和实现过程

如果你在开发过程中遇到如下问题:

file_get_contents(): Unable to find the wrapper "https" - did you forget to enable it when you configured PHP?

出现这个错误的原因很简单,php配置中的加密模块并没有打开

解决方案:1.(windows)php.ini配置文件,定位到下图蓝色所示的位置,把extension=php_openssl.dll 前面的; 分号去掉

去掉以后重新启动Apache或者nginx服务器,再访问,就不会有这个错误了。

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

PHP 相关文章推荐
第十五节--Zend引擎的发展
Nov 16 PHP
解析php扩展php_curl.dll不加载的解决方法
Jun 26 PHP
php循环创建目录示例分享(php创建多级目录)
Mar 04 PHP
php写的AES加密解密类分享
Jun 20 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十四)
Jun 26 PHP
php导出CSV抽象类实例
Sep 24 PHP
PHP实现定时执行任务的方法
Oct 05 PHP
PHP时间类完整实例(非常实用)
Dec 25 PHP
PHP-FPM运行状态的实时查看及监控详解
Nov 18 PHP
php中Ioc(控制反转)和Di(依赖注入)
May 07 PHP
php中访问修饰符的知识点总结
Jan 27 PHP
调试php程序的简单步骤
Oct 04 PHP
PHP实现正则表达式分组捕获操作示例
Feb 03 #PHP
php实现解析xml并生成sql语句的方法
Feb 03 #PHP
PHP删除数组中指定下标的元素方法
Feb 03 #PHP
php学习笔记之mb_strstr的基本使用
Feb 03 #PHP
php通过pecl方式安装扩展的实例讲解
Feb 02 #PHP
PHP实现对图片的反色处理功能【测试可用】
Feb 01 #PHP
php 删除一维数组中某一个值元素的操作方法
Feb 01 #PHP
You might like
如何对PHP程序中的常见漏洞进行攻击
2006/10/09 PHP
php获取url字符串截取路径的文件名和扩展名的函数
2010/01/22 PHP
php操作xml
2013/10/27 PHP
php使用PDO事务配合表格读取大量数据插入操作实现方法
2017/02/16 PHP
TP5框架实现自定义分页样式的方法示例
2020/04/05 PHP
使用prototype.js进行异步操作
2007/02/07 Javascript
用JS写的一个TableView控件代码
2010/01/23 Javascript
extjs ColumnChart设置不同的颜色实现代码
2013/05/17 Javascript
浅析return false的正确使用
2013/11/04 Javascript
原生JS实现图片轮播与淡入效果的简单实例
2016/08/21 Javascript
微信小程序 使用canvas制作K线实例详解
2017/01/12 Javascript
微信小程序后台解密用户数据实例详解
2017/06/28 Javascript
浅谈Webpack 是如何加载模块的
2018/05/24 Javascript
高效jQuery选择器的5个技巧实例分析
2019/11/26 jQuery
Python字符串格式化%s%d%f详解
2018/02/02 Python
对python中使用requests模块参数编码的不同处理方法
2018/05/18 Python
python numpy数组中的复制知识解析
2020/02/03 Python
Python爬虫基于lxml解决数据编码乱码问题
2020/07/31 Python
Pycharm导入anaconda环境的教程图解
2020/07/31 Python
python中实现词云图的示例
2020/12/19 Python
Python读写Excel表格的方法
2021/03/02 Python
详解HTML5中的picture元素响应式处理图片
2018/01/03 HTML / CSS
美国乒乓球设备、配件和服装品牌:Killerspin
2020/06/07 全球购物
JSF面试题:Jsf中导航的标签是什么
2013/04/20 面试题
上海雨人软件技术开发有限公司测试题
2015/07/14 面试题
学生自我鉴定范文
2013/10/04 职场文书
新护士岗前培训制度
2014/02/02 职场文书
前厅部经理岗位职责范文
2014/02/04 职场文书
2015年幼儿园元旦游艺活动策划书
2014/12/09 职场文书
离婚律师函范本
2015/05/27 职场文书
新人入职感言
2015/07/31 职场文书
消防安全培训工作总结
2015/10/23 职场文书
2016父亲节感恩话语
2015/12/09 职场文书
教师外出学习心得体会
2016/01/18 职场文书
实用干货:敬酒词大全,帮你应付各种场合
2019/11/21 职场文书
一行Python命令实现批量加水印
2022/04/07 Python