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 协议》,转载必须注明作者和本文链接
推荐文章: