laravel实现QQ登录
Laravel实现QQ登录
环境:
laravel:5.5.40
php: 7.2.2
前置条件,在qq互联有创建应用的权限。https://blog.csdn.net/qq_25615395/article/details/80251094
1. 利用composer安装qq登录的依赖(在命令行输入框)
composer require socialiteproviders/qq
2. 将第三方的登录服务者注册进容器内(config/app.php)
'providers' => [
// 移除 'Laravel\Socialite\SocialiteServiceProvider',
SocialiteProviders\Manager\ServiceProvider::class, // 添加
];
3. 添加门脸类(config/app.php)
'Socialite' => Laravel\Socialite\Facades\Socialite::class,
4. 添加事件监听器(App/Providers/EventServiceProvider)
protected $listen = [
'SocialiteProviders\Manager\SocialiteWasCalled' => [
'SocialiteProviders\Qq\QqExtendSocialite@handle',//这里的SocialiteProviders\Qq\QqExtendSocialite@handle,里面有个q改成大写
'SocialiteProviders\QQ\QqExtendSocialite@handle',//改成这样就对了,之前如果那个q是小写的话会报找不到类的错误。
], ];
5. 在config/service.php添加QQ接口信息
'qq' => [
'client_id' => env('QQ_KEY'),
'client_secret' => env('QQ_SECRET'),
'redirect' => env('QQ_REDIRECT_URI'),
],
6. 在.env里面QQ接口的信息
QQ_KEY=xxxxxx
QQ_SECRET=xxxxxx
QQ_REDIRECT_URI=xxxxxx
QQ_KEY和QQ_SECRET需要在qq互联上申请,QQ_REDIRECT_URI需要在qq互联上设置。
这里的回调地址必须要跟qq互联管理中心(https://connect.qq.com)设置的回调地址一样。
7. 添加路由routes/web.php
// 登录界面的展示
Route::get('auth/{service}', 'Auth\SocialiteLoginController@redirectToProvider')->name('socialite_login_form');
// 登录回调的处理
Route::get('auth/{service}/callback', 'Auth\SocialiteLoginController@handleProviderCallback')->name('socialite_login');
8. 前台登录界面的使用
<div class="form-group"> <div class="col-md-8 col-md-offset-4"> <button type="submit" class="btn btn-primary"> 登录 </button> <a class="btn btn-link" href="{{ route('password.request') }}"> 忘记密码? </a> <a class="btn btn-link" href="{{route('socialite_login_form','qq')}}"><i class="fa fa-qq"></i> qq登录</a> </div> </div>
9. 添加控制器App\Http\Controllers\Auth\SocialiteLoginController.php
<?php namespace App\Http\Controllers\Auth; use Illuminate\Http\Request; use App\Http\Controllers\Controller; use Laravel\Socialite\Facades\Socialite; /** * 第三方登录控制器 * * Class SocialiteLoginController * @package App\Http\Controllers\Auth */ class SocialiteLoginController extends Controller { /** * 第三方登录用户信息的展示 * * @param $service * @return mixed */ public function redirectToProvider($service) { return Socialite::driver($service)->redirect(); } /** * 处理第三方登录的回调 * * @param $service */ public function handleProviderCallback($service) { $user = Socialite::driver($service)->user(); dd($user); } }
原文:https://blog.csdn.net/qq_25615395/article/details/80251455
原文地址:https://www.cnblogs.com/gwhm/p/11027796.html
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- ClickHouse源码笔记2:聚合流程的实现
- 5G边缘计算赋能安防互联网直播行业,青犀视频强力打造云、边、端一体化协同音视频解决方案
- 视频云平台流媒体服务EasyNVR能获取直播视频的RTSP流地址吗?
- 如何编写不存在即插入的 SQL
- SQL 打印一个月的日历
- Kubernetes节点的驱逐与预留
- 使用reveal.js制作精美的网页版PPT
- Ceph快照爱你不容易系列 03:快照数据一致性浅析
- 没想到竟是因为它!让我的服务器变成了别人的挖矿工具
- 从零到一,Serverless 平台在滴滴内部落地
- React 使用 Proxy 代理(create-react-app)
- .Net Core + EF + mysql 从数据库生成实体
- Git 常用命令
- Nodejs 一些细节 (持续更新)
- Jenkins 凭据使用