onlime / laravel-bexio-api-client
Bexio API 客户端库,使用 Laravel HTTP Client 实现
Requires
- php: ^8.2
- laravel/framework: ^10.0
- onlime/bexio-api-client: ^0.5
Requires (Dev)
- laravel/pint: ^1.13
Suggests
- onlime/laravel-http-client-global-logger: A zero-configuration logger for Laravel HTTP Client
README
bexio API 客户端库允许您与 bexio API 进行交互。 这是一个基于 onlime/bexio-api-client 的包装器,使用 Laravel HTTP Client 更容易地集成 Laravel。 您可以将其与我的零配置 Laravel HTTP Client Global Logger 结合使用,以便进行详细的请求/响应记录。
有关如何使用 API 的更多信息,请参阅 onlime/bexio-api-client README 和官方的 bexio API 文档。
安装
您可以使用 Composer 将库集成到您的 Laravel 项目中
$ composer require onlime/laravel-bexio-api-client
示例用法
注意: 我在这里仅记录 Laravel 项目的集成。请参阅 onlime/bexio-api-client README 以获取 Bexio API 客户端库的文档。
我建议在 config/bexio.php
中配置此内容
<?php return [ /* |-------------------------------------------------------------------------- | Bexio API Credentials |-------------------------------------------------------------------------- */ 'api' => [ 'clientId' => env('BEXIO_API_CLIENT_ID', 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'), 'clientSecret' => env('BEXIO_API_CLIENT_SECRET', 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' ), 'tokensFile' => env('BEXIO_API_TOKENS_FILE', 'bexio_client_tokens.json'), 'scopes' => explode(' ', env('BEXIO_API_SCOPES', 'openid profile contact_edit offline_access kb_invoice_edit article_edit note_edit' )), ], ];
将您的 Bexio API 凭证从 Bexio 开发者门户 中放入您的 .env
BEXIO_API_CLIENT_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx BEXIO_API_CLIENT_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
创建一些安全的存储来存储客户端(访问和刷新)令牌,config/filesystems.php
'disks' => [ // ... 'secure' => [ 'driver' => 'local', 'root' => storage_path('app/secure'), 'visibility' => 'private', 'throw' => false, ],
然后您可以在您的 routes/web.php
中定义这两条路由
GET /admin/bexio/auth
– 验证 Bexio 并生成您的访问和刷新令牌GET /admin/bexio/demo
– 测试 Bexio API 的演示页面,使用先前生成的访问令牌
// routes/web.php <?php Route::middleware('auth')->group(function () { Route::group(['prefix' => 'admin'], function () { Route::controller(BexioController::class)->prefix('bexio')->group(function () { Route::redirect('/', '/admin/bexio/auth'); Route::get('/auth', 'authenticate')->name('bexio.auth'); Route::get('/demo', 'demo')->name('bexio.demo'); }); }); });
警告: 确保保护这些规则,并且仅将其提供给您的管理员用户!
现在创建控制器,php artisan make:controller BexioController
<?php namespace App\Http\Controllers; use Bexio\Resource\Contact as BexioContact; use Illuminate\Http\Request; use Illuminate\Support\Facades\Storage; use Inertia\Inertia; use LaravelBexio\Client; class BexioController extends Controller { public function authenticate(Request $request) { $client = $this->getBexioClient(); $client->authenticate(config('bexio.api.scopes'), route('bexio.auth')); $client->persistTokens($this->getTokensFile()); return view('bexio.auth'); } public function demo(Request $request) { $client = $this->getBexioClient(); $client->loadTokens($this->getTokensFile()); return view('bexio.demo', [ 'contacts' => (new BexioContact($client))->getContacts(), ]); } protected function getBexioClient(): Client { return new Client( config('bexio.api.clientId'), config('bexio.api.clientSecret') ); } protected function getTokensFile(): string { return Storage::disk('secure')->path(config('bexio.api.tokensFile')); } }
注意: 确保将 https://:8080/admin/bexio/auth 添加到 Bexio 开发者门户 中的重定向 URL
现在启动您的应用程序
$ php artisan serve
然后,访问 Bexio 认证页面
这将要求您确认请求的作用域,如果您尚未这样做,您将需要使用您的 Bexio 凭证登录。
一旦您已认证,您将看到 bexio.auth
视图的内容,其中可能显示一些确认消息并要求您转到演示页面。位于 https://:8080/admin/bexio/demo 的演示页面将使用存储在 <project-root>/storage/app/secure/bexio_client_tokens.json
中的 Bexio API 客户端令牌,并显示所有 Bexio 联系人(例如,以验证一切正常)。
作者
此出色软件包的作者是 Philip Iezzi (Onlime GmbH)。
许可
此软件包受 MIT 许可证 的许可,但是支持非常欢迎。