- 7
- 1
- 0
- 打赏
位置: 首页 >文章
1、首先我们需要申请
https://connect.qq.com/
APP ID
APP Key
网站回调域
以上问题先申请通过
2、
composer require socialiteproviders/qq
(如果不想自动安装可以选择手动方法:https://www.ormcc.com/article/12)
//config/app.php配置
//注册服务提供者(同时注释掉原有的Socialite提供者):
'providers' => [
SocialiteProviders\Manager\ServiceProvider::class,
]
//添加Socialite门面
'aliases' => [
'Socialite' => Laravel\Socialite\Facades\Socialite::class,
]
//App/Providers/EventServiceProvider.php中配置
//添加事件监听器
protected $listen = [
'App\Events\SomeEvent' => [
'App\Listeners\EventListener',
],
'SocialiteProviders\Manager\SocialiteWasCalled' => [
'SocialiteProviders\QQ\QqExtendSocialite@handle',
],
];
//config/services.php中添加
'qq' => [
'client_id' => env('QQ_KEY'),
'client_secret' => env('QQ_SECRET'),
'redirect' => env('QQ_REDIRECT_URI'),
],
//.env中添加
QQ_KEY=APP ID
QQ_SECRET=APP Key
QQ_REDIRECT_URI=网站回调域
//routes.php中添加
// qq登录界面;
Route::get('/auth/qq',['uses' => 'Auth\SocialiteLoginController@redirectToProvider']);
// qq网站回调域
Route::get('auth/qq/callback',['uses' => 'Auth\SocialiteLoginController@handleProviderCallback']);
//创建SocialiteLoginController.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
{
/**
* 第三方qq登录用户信息的展示
*
* @param $service
* @return mixed
*/
public function redirectToProvider()
{
return Socialite::driver('qq')->redirect();
}
/**
* 处理第三方qq登录的回调
*
* @param $service
*/
public function handleProviderCallback()
{
$user = Socialite::driver('qq')->stateless()->user();
dd($user);
}
模板文件
<a class="login-qq" href="/auth/qq"><i class="fa fa-qq"></i></a>
以上基本完成
遇到问题总结如下
composer require guzzlehttp/guzzle
安装完成最新版本 "guzzlehttp/guzzle": "^6.5"
这时候会报错
Fatal error: Call to undefined function GuzzleHttp\choose_handler() in GuzzleHttp/HandlerStack.php on line 42
解决方案:
public static function create(callable $handler = null)
{
require __DIR__ . '/functions.php';//注意新增部分
$stack = new self($handler ?: choose_handler());
$stack->push(Middleware::httpErrors(), 'http_errors');
$stack->push(Middleware::redirect(), 'allow_redirects');
$stack->push(Middleware::cookies(), 'cookies');
$stack->push(Middleware::prepareBody(), 'prepare_body');
return $stack;
}
//微信
composer require laravel/socialite
//微博
composer require socialiteproviders/weibo
//github
composer require overtrue/socialite
具体方法和qq类似
转载:欢迎来到本站,转载请注明文章出处https://www.ormcc.com ,欢迎加入技术讨论群599606903
上一篇:laravel邮件发送问题总结
下一篇:CSS跳动的文字
ormcc
一个爱捣鼓的程序员
IP访问121771次,运行1480天
微信支付宝
[em_63]
3年前 · 上海 上海