Laravel qq、微信、微博、github第三方登录

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);
}

模板文件

以上基本完成
遇到问题总结如下

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类似

你可能感兴趣的:(PHP,larrael,laravel,微信,github,php)