winkylink / socialite
WinkyLink 的 Socialite 插件
5.4
2022-09-17 09:35 UTC
Requires
- php: ^7.2|^8.0
- ext-json: *
- laravel/socialite: ^5.0
Requires (Dev)
- roave/security-advisories: dev-latest
This package is auto-updated.
Last update: 2024-09-17 14:01:26 UTC
README
作者:WinkyLink.com
1. 在 https://winkylink.com 创建您的应用程序
2. 获取您的客户端 ID 和客户端密钥
3. 在您的 AppServiceProvider 中注册插件
public function boot(): void
{
try {
$socialite = $this->app->make(Factory::class);
$socialite->extend('winkylink', static function () use ($socialite) {
return $socialite->buildProvider(SocialiteWinkyLinkProvider::class, config('services.winkylink'));
});
} catch (BindingResolutionException $e) {
}
}
4. 在您的 config/service.php 中添加配置
'winkylink' => [
'client_id' => '',
'client_secret' => '',
'redirect' => env('APP_URL', '').'/callback/winkylink',
],
5. 创建您的路由
Route::get('auth/redirect/{provider}', 'SocialController@redirect');
Route::get('callback/{provider}', 'SocialController@callback');
6. 创建您的控制器,如下所示
class SocialController extends BaseController
{
/**
* @param string $provider
* @return RedirectResponse
*/
public function redirect(string $provider): RedirectResponse
{
return Socialite::driver($provider)->redirect();
}
/**
* @param string $provider
* @return RedirectResponse
*/
public function callback(string $provider): RedirectResponse
{
try {
$getInfo = Socialite::driver($provider)->user();
$user = $this->createUser($getInfo, $provider);
auth()->login($user);
return redirect()->route('index');
} catch (Throwable $e) {
return redirect('auth/redirect/' . $provider);
}
}
/**
* @param mixed $getInfo
* @param string $provider
* @return User
*/
private function createUser($getInfo, string $provider): User
{
// Create your user model using $getInfo array
return $user;
}
}
7. 将以下内容添加到您的 blade 登录按钮中
<a href="https://yourwebsite.com/auth/redirect/winkylink">Login with WinkyLink</a>