freebuu / socialite-local
本地开发用 Socialite 提供者
v0.1.1-alpha
2023-10-01 19:22 UTC
Requires
- php: ^7.4 || ^8.0
- illuminate/cache: ^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10
- illuminate/support: ^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10
- laravel/socialite: ~4.0 || ~5.0
This package is auto-updated.
Last update: 2024-09-30 01:43:44 UTC
README
介绍
此库用于在本地模拟 OAuth 服务器。所有对 Socialite 的调用都被拦截并替换为本地驱动。仅安装即可使用 - 在大多数情况下无需额外配置。
安装
- 需要 Socialite v4 或 v5 以及 OAuth2 提供者(目前不支持 OAuth1 提供者)
- 使用 Composer 安装:
composer require --dev freebuu/socialite-local
⚠️ 警告:出于安全原因,仅将此包作为开发依赖项安装。
用法
像平常一样使用 socialite
Socialite::driver('github')->redirect()
您将被重定向到本地页面 - 在那里您可以为主体设置电子邮件、用户名、id 等。提交表单后,您可以像平常一样获取 socialite 用户 - 使用先前输入的数据。
Socialite::driver('github')->user()
附加配置
服务器响应
如果您需要模仿来自服务器的用户结构 - 可以通过 afterResolving 回调实现
public function register() { $this->app->afterResolving('socialite_local.subject_repository', function ($r){ $r->setUserCallback(function ($data){ //data is array coming from login form //return array with user info return [ 'id' => $data['id'] ?? random_int(1000, 10000), 'uuid' => $data['uuid'] ?? vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex(random_bytes(16)), 4)), 'email' => $email = $data['email'], 'username' => $data['username'] ?? $email, 'name' => $data['name'] ?? mb_substr($email, 0, strpos($email, '@')) . '_name', ]; }); }); }
用户映射器
默认情况下,库使用原始驱动映射器 - 将服务器响应映射到 User 模型。您可以通过设置 SOCIALITE_LOCAL_USE_ORIGINAL_MAPPER 为 false 来禁用此行为