Laravel 第三方登录之 qq

申请qq互联

首先到qq互联申请加入开发者: https://connect.qq.com
右上角登录,登录后点击右上角头像,选第一个授权管理
然后首页-网站应用接入-开始创建
如果只是个人练手第三方登陆,可以不进行审核等操作,你会得到一个App Key和一个App Secret。
Composer安装

composer require socialiteproviders/qq

添加 Service Provider config/app.php 如果之前添加过 Socialite Provider,得先注释掉

'providers' => [
//    Laravel\Socialite\SocialiteServiceProvider::class,
SocialiteProviders\Manager\ServiceProvider::class,
],

添加 Facades Aliase config/app.php

'aliases' => [
'Socialite' => Laravel\Socialite\Facades\Socialite::class,
],

添加事件处理器 文件 app/Providers/EventServiceProvider.php

protected $listen = [
'SocialiteProviders\Manager\SocialiteWasCalled' => [
'SocialiteProviders\QQ\QqExtendSocialite@handle',//改成这样就对了,之前如果那个q是小写的话会报找不到类的错误。
],
];

添加路由 可以自己创建控制器

//qq回调的路径
Route::get('/user/get_user_info','Auth\AuthController@qqlogin');
//qq登录的路径
Route::get('/qq','Auth\AuthController@qq');

配置 文件 config/services.php

'qq' => [
'client_id' => env('QQ_KEY'),
'client_secret' => env('QQ_SECRET'),
'redirect' => env('QQ_REDIRECT_URI'),  
], 

.env

QQ_KEY=101554021
QQ_SECRET=b234335ec72942f388f9dfea678f3446
QQ_REDIRECT_URI=http://livenew.yunbaozb.com/user/get_user_info

控制器代码

public function qq()
{
return \Socialite::with('qq')->redirect();
}
public function qqlogin()
{
$oauthUser = \Socialite::driver('qq')->user();
// var_dump($oauthUser->getId());
$name=$oauthUser->getNickname();
//  // var_dump($oauthUser->getName());
//  // var_dump($oauthUser->getEmail());
$img=$oauthUser->getAvatar();
if(DB::table('users')->where('name','=',$name)->first()){
$arr = array('name' => $name, 'img' => $img);
\Session::put('hy_id', $arr);
$cookie = cookie('hy_id', $arr);
echo 'Login success';
response('登陆成功')->cookie($cookie);
}else{
$arr = array('name' => $name, 'img' => $img);
$info = DB::table('users')->insertGetId($arr);
\Session::put('hy_id', $info);
$cookie = cookie('hy_id', $info);
echo 'Login success';
response('登陆成功')->cookie($cookie);
}
}

错误解决
如果是没有21322 显示重定向错误

qq互联里面设置的重定向错误

如果是ssl错误的话

下载cacert.pem
放置在php的文件夹下面
配置php.ini   curl.cainfo ="cacert.pem 所在的路径"

如果是400 Bad Request或no message

清理游览器记录,清理cookie
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 3

跟微博很类似

5年前 评论

想问一下怎么调试qq登录,因为在qq后台配置的url和开发环境的url不一致

5年前 评论

实现了一个gitee第三方登录的例子 在线Demo(https://element.wmhello.cn)

8个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!