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\SocialiteServiceProvider
从 providers[]
阵列中删除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 Key
和App 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
进行测试。