2018-09-01Socialite Providers,支持微博、微信、QQ等

Github地址

https://github.com/SocialiteProviders

微博第三方登录实现过程。

新浪微博(Weibo)

1、安装
// This assumes that you have composer installed globally
composer require socialiteproviders/weibo
2、服务提供者(config\app.php)
'providers' => [``
    // a whole bunch of providers
    // remove 'Laravel\Socialite\SocialiteServiceProvider',
    \SocialiteProviders\Manager\ServiceProvider::class, // add
];

注:如已添加,请Laravel\Socialite\SocialiteServiceProviderproviders[] 阵列中删除config\app.php
添加Socialite门面(如果已有略过本操作):

'Socialite' => Laravel\Socialite\Facades\Socialite::class,
3.添加时间监听器(App/Providers/EventServiceProvider):
protected $listen = [
    'SocialiteProviders\Manager\SocialiteWasCalled' => [
        'SocialiteProviders\Weibo\WeiboExtendSocialite@handle',
    ],
];

新浪微博开放平台(http://open.weibo.com/)创建一个App KeyApp Secret
然后在配置文件app/services.php中添加weibo配置项:

 'weibo' => [
        'client_id' => env('WEIBO_KEY', 'App Key'),
        'client_secret' => env('WEIBO_SECRET', 'App Secret'),
        'redirect' => env('WEIBO_REDIRECT_URI', '授权回调页')
    ],
4.controller

在控制器添加代码:

     /**
     * 重定向用户信息到 weibo 认证页面。
     *
     * @return \Illuminate\Http\Response
     */
    public function redirectToProvider(Request $request)
    {
        //stateless 方法可用于禁止会话状态验证。这个方法在向 API 添加社会化身份验证时非常有用。
        return Socialite::driver('weibo')->stateless()->redirect();
    }

    /**
     * 获取来自 weibo 返回的用户信息。
     *
     * @return \Illuminate\Http\Response
     */
    public function handleProviderCallback(Request $request)
    {
        $user = Socialite::driver('weibo')->stateless()->user();
        $token = $user->token;
        echo $token;
        $refreshToken = $user->refreshToken; // not always provided
        echo $refreshToken;
        $expiresIn = $user->expiresIn;
        echo $expiresIn;

        // All Providers
        dd($user->getId());
        $user->getNickname();
        $user->getName();
        $user->getEmail();
        $user->getAvatar();
    }

添加路由:

Route::get('login/weibo', 'UsersController@redirectToProvider');
Route::get('login/weibo/callback', 'UsersController@handleProviderCallback');

在浏览器中访问本地配置域名+/login/weibo进行测试。

你可能感兴趣的:(2018-09-01Socialite Providers,支持微博、微信、QQ等)