composer 安装第三方登录

安装 Laravel Socialite
用composer安装

$ composer require “overtrue/laravel-socialite:~1.0”

配置
你需要在 config/app.php 的 providers 键中追加:

Overtrue\LaravelSocialite\ServiceProvider::class,

aliases中追加

‘Socialite’ => Overtrue\LaravelSocialite\Socialite::class,

在 config/services.php 配置文件中添加驱动器配置项:

'github' => [
    'client_id'     => 'your-app-id',
    'client_secret' => 'your-app-secret',
    'redirect'      => 'http://localhost/socialite/callback.php',
],

'weibo' => [
    'client_id'     => 'your-app-id',
    'client_secret' => 'your-app-secret',
    'redirect'      => 'http://localhost/socialite/callback.php',
],
'qq' => [
    'client_id'     => 'your-app-id',
    'client_secret' => 'your-app-secret',
    'redirect'      => 'http://localhost/socialite/callback.php',
],

使用
添加好路由
Route::any(’/oauth/qq’, ‘User\UserIndexController@qqRedirect’);
Route::any(’/oauth/qq/callback’, ‘User\UserIndexController@qqCallback’);

Route::any('/oauth/weibo', 'User\UserIndexController@weiboRedirect');
Route::any('/oauth/weibo/callback', 'User\UserIndexController@weiboCallback');

创建好对应的控制器然后写调用方法,我这边授权后将用户信息判断是否已经绑定用户,没有的话就存到session中,完成注册后保存用户,存在的话直接登录用户。
public function qqRedirect()
{
return Socialite::driver(‘qq’)->redirect();
}

public function qqCallback()
{
    $user = Socialite::driver('qq')->user();

    $userQQ =  UniUserQq::where('id',$user->getId())->first();

    if($userQQ){

        $uniUser = UniUser::where('ID',$userQQ->user_id)->first();

        $this->guard()->login($uniUser);

        return redirect('/user/login');
    }else{

        $userQQ = new  UniUserQq();
        $userQQ->id = $user->getId();
        $userQQ->unionid = $user->getAttributes()['unionid'];
        $userQQ->nickname = $user->getNickname();
        $userQQ->name = $user->getName();
        $userQQ->email = $user->getEmail();
        $userQQ->avatar = $user->getAvatar();
        $userQQ->gender = $user->getOriginal()['gender'];
        $userQQ->province = $user->getOriginal()['province'];
        $userQQ->city = $user->getOriginal()['city'];
        $userQQ->year = $user->getOriginal()['year'];

        session(['userAuth'=>$userQQ]);

        $this->redirectReg($user->getNickname());

    }


}

public function weiboRedirect()
{
    return Socialite::driver('weibo')->redirect();
}

public function weiboCallback()
{
    $user = Socialite::driver('weibo')->user();

    $userWeibo =  UniUserWeibo::where('id',$user->getId())->first();

    if($userWeibo){

        $uniUser = UniUser::where('ID',$userWeibo->user_id)->first();

        $this->guard()->login($uniUser);

        return redirect('/user/login');
    }else{
        $userWeibo = new  UniUserWeibo();
        $userWeibo->id = $user->getOriginal()['id'];
        $userWeibo->idstr = $user->getOriginal()['idstr'];
        $userWeibo->class = $user->getOriginal()['class'];
        $userWeibo->screen_name = $user->getOriginal()['screen_name'];
        $userWeibo->name = $user->getOriginal()['name'];
        $userWeibo->location = $user->getOriginal()['location'];
        $userWeibo->url = $user->getOriginal()['url'];
        $userWeibo->avatar = $user->getOriginal()['avatar_large'];
        $userWeibo->gender = $user->getOriginal()['gender'];
        $userWeibo->domain = $user->getOriginal()['domain'];
        $userWeibo->remark = $user->getOriginal()['remark'];

        session(['userAuth'=>$userWeibo]);

       return $this->redirectReg($user->getNickname());

    }
}

注:授权的回调URL都需要设定为你需要回调的域名地址中,不然回调授权后无法跳回页面

猜你喜欢

转载自blog.csdn.net/revere666/article/details/88180789