学典三 / socialiteproviders-xianyan_bbs
laravel socialite 的 xianyan_bbs OAuth2 提供者
Requires
This package is auto-updated.
Last update: 2024-09-09 22:27:38 UTC
README
Laravel Socialite 提供者集合
简单至上
使用熟悉的结构进行最小化设置,帮助您专注于开发新产品。
无缝集成
遵循与 Laravel Socialite 相同的 API,可实现无缝集成。
强大支持
通过 Socialite 管理器,您将能够访问自定义和官方提供者。
1. 安装
// This assumes that you have composer installed globally composer require xuejd3/socialiteproviders-xianyan_bbs
2. 服务提供者
-
如果您已经添加了
Laravel\Socialite\SocialiteServiceProvider,请从config\app.php中的providers[]数组中删除。 -
将
\SocialiteProviders\Manager\ServiceProvider::class添加到config\app.php中的providers[]数组中。
例如
'providers' => [ // a whole bunch of providers // remove 'Laravel\Socialite\SocialiteServiceProvider', \SocialiteProviders\Manager\ServiceProvider::class, // add ];
- 注意:如果您想使用 Socialite Facade,您需要安装它。
3. 事件监听器
-
将
SocialiteProviders\Manager\SocialiteWasCalled事件添加到app/Providers/EventServiceProvider中的listen[]数组中。 -
将您的监听器(即提供者)添加到您刚刚创建的
SocialiteProviders\Manager\SocialiteWasCalled[]。 -
为此提供者添加的监听器是
'SocialiteProviders\\XianYanBbs\\XianYanBbsExtendSocialite@handle',。 -
注意:除非您用自己的提供者覆盖它们,否则您不需要为内置的社交提供者添加任何内容。
例如
/** * The event handler mappings for the application. * * @var array */ protected $listen = [ \SocialiteProviders\Manager\SocialiteWasCalled::class => [ // add your listeners (aka providers) here 'SocialiteProviders\XianYanBbs\XianYanBbsExtendSocialite@handle', ], ];
参考
4. 配置设置
您需要在服务配置文件中添加一个条目,以便在将配置文件缓存以在生产环境中使用(Laravel 命令 artisan config:cache)之后,所有配置仍然可用。
添加到 config/services.php。
'xianyan_bbs' => [ 'client_id' => env('XIANYANBBS_KEY'), 'client_secret' => env('XIANYANBBS_SECRET'), 'redirect' => env('XIANYANBBS_REDIRECT_URI'), 'guzzle' => [ 'headers' => ['User-Agent' => 'xuejd3/socialiteproviders-xianyan_bbs'], ] ]
5. 使用
-
现在您应该能够像平时一样使用它(假设您已安装 facade)
return Socialite::with('xianyan_bbs')->redirect();
$user = Socialite::driver('xianyan_bbs')->user(); $user->getId(); $user->getName(); $user->getEmail(); $user->getAvatar();
Lumen 支持
您可以使用 Socialite 提供者与 Lumen 一起使用。只需确保您已启用 facade 支持,并且正确遵循设置说明。
注意:如果您使用 Lumen,所有提供者将自动是无状态的,因为 Lumen 不跟踪状态。
此外,Lumen 中无法从 services[] 解析配置。您只能将值设置在 .env 文件中,如本文件中所展示的。如有需要,您还可以覆盖配置(如下所示)。
无状态
- 您可以选择是否要将提供者用作无状态。请记住,OAuth 提供者(Twitter、Tumblr 等)必须支持您选择的任何选项。
注意:如果您使用 Lumen,所有提供者将自动是无状态的,因为 Lumen 不跟踪状态。
// to turn off stateless
return Socialite::with('xianyan_bbs')->stateless(false)->redirect();
// to use stateless
return Socialite::with('xianyan_bbs')->stateless()->redirect();
覆盖配置
如果您需要在任何地方动态覆盖提供者的环境或配置变量,您可以使用以下方法
$clientId = "secret"; $clientSecret = "secret"; $redirectUrl = "http://yourdomain.com/api/redirect"; $additionalProviderConfig = [ // Add additional configuration values here. ]; $config = new \SocialiteProviders\Manager\Config( $clientId, $clientSecret, $redirectUrl, $additionalProviderConfig ); return Socialite::with('xianyan_bbs')->setConfig($config)->redirect();
检索访问令牌响应体
Laravel Socialite 默认仅允许访问 access_token。它可以通过 \Laravel\Socialite\User->token 公共属性访问。有时您需要访问整个响应体,这可能包含诸如 refresh_token 等项。
您可以通过访问属性 $user->accessTokenResponseBody 在调用 Socialite 中的 user() 方法后获取访问令牌响应体;
$user = Socialite::driver('xianyan_bbs')->user(); $accessTokenResponseBody = $user->accessTokenResponseBody;