redeman / imgur-laravel

Imgur API 的 Laravel 扩展包。提供对 adyg/php-imgur-api-client 库的便捷访问。

1.0.1 2015-12-23 15:04 UTC

This package is not auto-updated.

Last update: 2024-09-28 17:59:56 UTC


README

一个用于使用 Imgur API 的 Laravel (4 / 5) 扩展包。内部使用 adyg/php-imgur-api-client。此包提供了一个服务提供者、一些配置和一个外观,这样您应该可以立即开始编写您的应用程序。

有关如何使用 adyg/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 安装此包,这可以通过将以下内容添加到您的 require 块中完成,

"redeman/imgur-laravel": "~1.0",

然后,您可以通过添加以下内容来注册服务提供者,

'Redeman\Imgur\ImgurServiceProvider',

到您的 providers 数组(在 config/app.php 中)。Imgur 使用 OAuth 2.0 验证用户。因此,如果您希望用户能够查看和上传图片,则需要从用户那里获取认证令牌。在 Laravel 5 中,您可以通过首先将 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',
];

接下来,您应该将 imgur 中间件添加到任何需要通过 Imgur 验证用户的路由中。AuthenticateImgur 中间件将存储和检索用户的访问令牌。如果用户未通过 Imgur 验证(这意味着您的应用程序不知道用户的访问令牌),则用户将被重定向到名为 imgur.authenticate 的路由。如果您是 Laravel 4 用户,则只需添加服务提供者即可。此提供者将注册一个 imgur 过滤器,您可以在路由中使用它,以下是如何做到这一点的示例。在以下部分中,我们展示了一些简单路由的示例。

示例

routes.php:

// Show the user a random image
Route::get('/', ['middleware' => ['imgur'], function() {
    $client = App::make('Imgur\Client');
    $images = $client->api('gallery')->randomGalleryImages();

    return View::make('imgur.images')->with('images', $images);
}]);

// Ask the user to authenticate using Imgur's services
Route::get('imgur/authenticate', ['as' => 'imgur.authenticate',  function() {
    $client = App::make('Imgur\Client');

    return View::make('imgur.authenticate')->with('imgurUrl', $client->getAuthenticationUrl());
}]);

如果您是 Laravel 4 用户,则应将 middleware 替换为 before

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

配置

首先发布配置文件

Laravel 4

php artisan config:publish redeman/imgur-laravel

Laravel 5

php artisan vendor:publish --provider="Redeman\Imgur\ImgurServiceProviderLaravel5"

现在您可以填写 client_idclient_secret 的适当值。建议使用包含您的客户端 ID 和密钥的 .env 文件。以下是在 Laravel 5 中如何做到这一点的示例

/*
 * Public client id
 */
'client_id' => env('CLIENT_ID'),

/**
 * Client secret
 */
'client_secret' => env('CLIENT_SECRET'),

阅读Laravel 文档 了解有关环境配置的更多信息。

使用自定义 TokenStorage

AuthenticateImgur 中间件使用 Redeman\Imgur\TokenStorage\Storage 接口来存储用户的访问令牌。默认情况下,我们提供了一个 SessionStorage,它将数据保存在用户的会话中。但是,您也可以使用数据库或其他存储设施。为此,您需要将 config/imgur.php 文件中的 token_storage 值更改为您想要使用的类的名称。

待办事项

  • 默认提供更多存储设施
  • 为中间件和过滤器添加测试