tranghaviet / imgur-laravel
Imgur API 3 的 Laravel 扩展包。提供了对 j0k3r/php-imgur-api-client 库的简单访问。
Requires
- php: ^7|^8
- j0k3r/php-imgur-api-client: ^3.0.0
- laravel/framework: ^5.8|^6|^7|^8
Requires (Dev)
- mockery/mockery: ^0.9.4
- phpunit/phpunit: ~4.0
README
一个用于使用 Imgur API 的 Laravel (>= 5.8) 扩展包。内部使用 j0k3r/php-imgur-api-client。该扩展包提供了一个服务提供者、一些配置和一个外观,这样你应该能够立即开始编写你的应用程序。
有关如何使用 j0k3r/php-imgur-api-client 的更详细文档,你应该查看他们的 文档。
快速示例
use Redeman\Imgur\Facades\Imgur; $images = Imgur::api('gallery')->randomGalleryImages(); foreach ($images as $image) { echo '<li><img src="' . $image->getLink() . '"></li>'; }
入门指南
首先,您需要使用 composer 安装此包
composer require tranghaviet/imgur-laravel
Imgur 使用 OAuth 2.0 对用户进行身份验证。因此,如果您希望用户能够查看和上传图片,您需要从您的用户那里获取一个身份验证令牌。在 Laravel 中,您可以通过首先将中间件添加到 Redeman\Imgur\Middleware\AuthenticateImgur 中间件到您的 App\Http\Kernel 中来完成此操作。
/** * The application's route middleware. * * @var array */ protected $routeMiddleware = [ // your other route middleware 'imgur' => \Redeman\Imgur\Middleware\AuthenticateImgur::class, ];
接下来,您应该在需要通过 Imgur 进行身份验证的任何路由中添加 imgur 中间件。AuthenticateImgur 中间件将存储和检索用户的访问令牌。如果用户没有通过 Imgur 进行身份验证(这意味着您的应用程序不知道用户的访问令牌),则用户将被重定向到名为 imgur.authenticate 的路由。如果您是 Laravel 4 用户,则只需添加服务提供者即可。此提供者将注册一个 imgur 过滤器,您可以使用它来为您的路由提供支持,下面是如何操作的示例。在下一节中,我们展示了几个简单路由的示例。
示例
routes.php:
// Show the user a random image Route::get('/', function() { $client = App::make('Imgur\Client'); $images = $client->api('gallery')->randomGalleryImages(); return view('imgur.images')->with('images', $images); })->middleware('imgur'); // Ask the user to authenticate using Imgur's services Route::get('imgur/authenticate', ['as' => 'imgur.authenticate', function() { $client = App::make('Imgur\Client'); return view('imgur.authenticate')->with('imgurUrl', $client->getAuthenticationUrl()); }]);
imgur.images.blade.php:
<p>Here are some images for you to enjoy:</p> @foreach ($images as $image) <img src="{{ $image->getLink() }}"> @endforeach
imgur.authenticate.blade.php:
<h2>You need to register with Imgur in order to visit this page:</h2> <a href="{{ $imgurUrl }}">Click to authorize</a>
现在您已经设置好了!下一节将描述如何配置扩展包以使用您的客户端 ID、密钥和自定义 TokenStorage。
配置
您可以发布配置文件
php artisan vendor:publish --provider="Redeman\Imgur\ImgurServiceProvider"
现在您可以为 client_id 和 client_secret 填写适当的值。建议使用包含您的客户端 ID 和密钥的 .env 文件。
/* * Public client id */ 'client_id' => env('CLIENT_ID'), /** * Client secret */ 'client_secret' => env('CLIENT_SECRET'),
使用自定义 TokenStorage
AuthenticateImgur 中间件使用 Redeman\Imgur\TokenStorage\Storage 接口来存储用户的访问令牌。默认情况下,我们提供了一个 SessionStorage,它将在用户的会话中保存数据。然而,您也可以使用数据库或其他存储设施。为此,您必须将您的 config/imgur.php 文件中的 token_storage 值更改为您想要使用的类的名称。
待办事项
- 默认情况下提供更多存储设施
- 为中间件添加测试