ncit / efaas-socialite
eFaas Provider for Laravel Socialite
Requires
- php: >=7.2
- illuminate/http: ^9.0|^10.0
- illuminate/support: ^5.6|^6.0|^7.0|^8.0|^9.0|^10.0
- laravel/socialite: ~3.3|~4.0|~5.0
Requires (Dev)
- orchestra/testbench: ^4.0
- phpunit/phpunit: ^8.0
This package is not auto-updated.
Last update: 2024-09-27 08:09:59 UTC
README
Laravel Socialite 的 Laravel Socialite 提供程序,用于 eFaas。
安装
您可以通过 composer 安装此包
composer require ncit/efaas-socialite
Laravel 5.5 及以上版本使用包自动发现,因此不需要您手动添加 ServiceProvider。
更新 composer 后,将 ServiceProvider 添加到 config/app.php 中的 providers 数组
Ncit\Efaas\Socialite\Providers\EfaasSocialiteServiceProvider::class,
在 config/services.php 中添加配置
'efaas' => [ 'client_id' => env('EFAAS_CLIENT_ID'), 'client_secret' => env('EFAAS_CLIENT_SECRET'), 'redirect' => env('EFAAS_CLIENT_REDIRECT_URI'), 'server_url' => env('EFAAS_URL', 'https://efaas.gov.mv/connect'), ],
使用方法
现在您应该可以使用此提供程序,就像您通常使用 Socialite 一样(假设您已安装了 facade):有关更多信息,请参阅官方 Social 文档。
注意:如果您的 Laravel 应用在请求 eFaas 授权端点时收到 403 Forbidden
错误,请请求 NCIT 将您的服务器 IP 加入白名单。
//efaas default scopes are openid and efaas.profile return Socialite::driver('efaas')->redirect(); //to get extra scopes pass other scopes on scopes methods return Socialite::driver('efaas')->scopes([ 'openid', 'efaas.profile', 'efaas.email', 'efaas.mobile', 'efaas.passport_number', 'efaas.country', 'efaas.work_permit_status', 'efaas.photo' ])->redirect();
并在您的回调处理程序中,您可以像这样访问用户数据。
$efaasUser = Socialite::driver('efaas')->user();
$accessToken = $efaasUser->token;
注销 eFaas 用户
在您的 Laravel 注销重定向中,使用在登录期间保存的访问令牌,通过 logOut()
方法重定向到提供程序
return Socialite::driver('efaas')->logOut($access_token, $post_logout_redirect_url);
使用 eFaas 一键登录
此包将自动将 /efaas-one-tap-login 端点添加到您的 Web 路由中,该端点将重定向到带有 eFaas 登录代码的 eFaas。
有时您可能希望自定义由 Efaas 提供商定义的路由。为此,您首先需要通过在应用程序的 AppServiceProvider
的 register 方法中添加 EfaasProvider::ignoreRoutes
来忽略 Efaas 提供商注册的路由
use Ncit\Efaas\EfaasProvider; /** * Register any application services. */ public function register(): void { EfaasProvider::ignoreRoutes(); }
然后,您可以将 Efaas 提供商在 其路由文件 中的路由复制到应用程序的 routes/web.php 文件中,并按需修改它们
Route::group([ 'as' => 'efaas.', 'namespace' => '\Ncit\Efaas\Http\Controllers', ], function () { // Efaas routes... });
从移动应用程序进行身份验证
要从移动应用程序对用户进行身份验证,请通过移动应用程序上的 Web View 将用户重定向到 eFaas 登录屏幕。然后在他们登录 eFaas 并重定向回您的网站后,从 eFaas 拦截 code
(授权代码)。
一旦您的移动应用程序收到 auth 代码,请将其发送到您的 API 端点。然后您可以使用以下方式从您的服务器端使用 auth 代码获取 eFaas 用户详细信息
$efaas_user = Socialite::driver('efaas')->userFromCode($code);
在您收到 eFaas 用户后,您可以根据您为 API 使用的任何身份验证方案颁发自己的访问令牌或 API 密钥。
更改 eFaas 登录提示行为
可以通过修改重定向请求中的提示选项来自定义 eFaas 登录提示行为
return Socialite::driver('efaas')->with(['prompt' => 'select_account'])->redirect();
可用的提示选项包括
eFaas 用户的所有可用属性
$id_number = $efaasUser->username;
所有可用的 eFaas 数据字段
测试
composer test
变更日志
有关最近更改的更多信息,请参阅变更日志。
贡献
有关详细信息,请参阅贡献。
安全
如果您发现任何安全相关的问题,请通过电子邮件is@ncit.gov.mv报告,而不是使用问题跟踪器。
致谢
许可
MIT 许可证(MIT)。有关更多信息,请参阅许可文件。