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 相关文章推荐
php学习 函数 课件
Jun 15 PHP
php auth_http类库进行身份效验
Mar 19 PHP
《PHP编程最快明白》第四讲:日期、表单接收、session、cookie
Nov 01 PHP
php数据库抽象层 PDO
May 07 PHP
Smarty中调用FCKeditor的方法
Oct 27 PHP
CodeIgniter中使用Smarty3基本配置
Jun 29 PHP
程序员的表白神器“520”大声喊出来
May 20 PHP
Yii2中使用join、joinwith多表关联查询
Jun 30 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
Dec 25 PHP
PHP大文件切割上传功能实例分析
Jul 01 PHP
thinkphp框架类库扩展操作示例
Nov 26 PHP
ThinkPHP5.1的权限控制怎么写?分享一个AUTH权限控制
Mar 09 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
批量修改RAR文件注释的php代码
2010/11/20 PHP
PHP处理二进制数据的实现方法
2016/06/13 PHP
PHP基于pdo的数据库操作类【可支持mysql、sqlserver及oracle】
2018/05/21 PHP
firefox浏览器下javascript 拖动层效果与原理分析代码
2007/12/04 Javascript
script标签的 charset 属性使用说明
2010/12/04 Javascript
动态加载js和css(外部文件)
2013/04/17 Javascript
JavaScript导出Excel实例详解
2014/11/25 Javascript
提交按钮的name='submit'引起的js失效问题及原因
2015/02/25 Javascript
JavaScript获取当前网页标题(title)的方法
2015/04/03 Javascript
jquery衣服颜色选取插件效果代码分享
2015/08/28 Javascript
JS动态给对象添加事件的简单方法
2016/07/19 Javascript
基于jQuery实现的打字机效果
2017/01/16 Javascript
使用jQuery实现页面定时弹出广告效果
2017/08/24 jQuery
vue实现文章内容过长点击阅读全文功能的实例
2017/12/28 Javascript
Vue 源码分析之 Observer实现过程
2018/03/29 Javascript
vue双向数据绑定知识点总结
2018/04/18 Javascript
react-router4按需加载(踩坑填坑)
2019/01/06 Javascript
微信小程序实现的一键连接wifi功能示例
2019/04/24 Javascript
浅谈redux, koa, express 中间件实现对比解析
2019/05/23 Javascript
jQuery zTree插件快速实现目录树
2019/08/16 jQuery
python学习笔记:字典的使用示例详解
2014/06/13 Python
收集的几个Python小技巧分享
2014/11/22 Python
Python Web框架Flask中使用新浪SAE云存储实例
2015/02/08 Python
Python实现查看系统启动项功能示例
2018/05/10 Python
Python Pandas 获取列匹配特定值的行的索引问题
2019/07/01 Python
Python如何使用k-means方法将列表中相似的句子归类
2019/08/08 Python
Pycharm连接gitlab实现过程图解
2020/09/01 Python
html5 冒号分隔符对齐的实现
2019/07/31 HTML / CSS
Skip Hop官网:好莱坞宝宝挚爱品牌
2018/06/17 全球购物
Ray-Ban雷朋西班牙官网:全球领先的太阳眼镜品牌
2018/11/28 全球购物
AMAVII眼镜官网:时尚和设计师太阳镜
2019/05/05 全球购物
美国球迷装备的第一来源:FOCO
2020/07/03 全球购物
试述DBMS的主要功能
2016/11/13 面试题
校长个人总结
2015/03/03 职场文书
解决Go gorm踩过的坑
2021/04/30 Golang
Matplotlib绘制条形图的方法你知道吗
2022/03/21 Python