tranghaviet/imgur-laravel

Imgur API 3 的 Laravel 扩展包。提供了对 j0k3r/php-imgur-api-client 库的简单访问。

1.2 2021-08-22 10:57 UTC

This package is auto-updated.

Last update: 2024-09-23 14:54:55 UTC


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_idclient_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 值更改为您想要使用的类的名称。

待办事项

  • 默认情况下提供更多存储设施
  • 为中间件添加测试