wubs/trakt

此包已被弃用,不再维护。未建议替换包。
关于此包最新版本(2.2.0)的许可证信息不可用。

Trakt API 包装器

2.2.0 2016-07-02 19:47 UTC

This package is not auto-updated.

Last update: 2022-02-01 12:26:12 UTC


README

Trakt-api-wrapper 版本 2

这是为他们的新 API(版本 2)提供的 Trakt API 包装器。

安装

在你的 composer.json 文件中添加: "wubs/trakt": "~2.0" 并运行 composer install

目标

此包装器的目标是使与 Trakt API 通信更加容易。它旨在易于使用、易于阅读并在许多情况下易于使用。作为 composer 包设计,它可以轻松地安装到大型应用程序中。

Laravel 使用

要在 Laravel 中使用此包装器,您只需将 Wubs\Trakt\Providers\Laravel\TraktApiServiceProvider::class 添加到您的 config/app.php 文件中的 providers 数组。完成此操作后,使用 \Wubs\Trakt\Trakt 类作为类型提示将其注入到路由或方法中。请参阅示例

 Route::get(
    '/',
    function (\Wubs\Trakt\Trakt $trakt) {
        dump($trakt->movies->popular());
    }
);

非 Laravel 使用

如果您不使用 Laravel,则需要做一些额外的工作才能使其工作。

实例化 Trakt API 包装器

API 包装器需要一个依赖项。`Wubs\Trakt\Auth` 类,它反过来依赖于 `Wubs\Trakt\Provider\TraktProvider`。`TraktProvider` 存储您的客户端 ID、密钥和重定向 URL。要创建 Auth 对象

<?php
$provider = new TraktProvider($clientId, $clientSecret, $redirectUrl);
$auth = new Auth($provider);

有了这个,您就可以创建 `Trakt` 类。

$trakt = new Trakt($auth);

如果您想模拟 HTTP 请求,您可以为 `Trakt` 提供第二个参数,该参数必须实现 `GuzzleHttp\ClientInterface`。如果不传递,将使用真实实现将请求发送到 Trakt。

一旦创建了 Trakt 对象,您应该将其注册到您的 IoC 容器中,这样您就只需编写一次实例化 Trakt 类的代码。

OAuth

要获取 OAuth 令牌,请在创建 `Trakt` 对象后执行以下操作。

<?php
$trakt->auth->authorize();

创建 Auth 对象时,您指定了重定向 URL。这是 Trakt 将用户重定向到的 URL,其中包含您可以使用它来获取访问令牌的代码。

当您调用 `$trakt->auth->authorize();` 时,用户将被重定向到 trakt.tv 的授权页面。在您的应用程序获得对他们的账户的访问权限后,Trakt 将重定向到提供的 URL,并带有代码。此代码可以用于获取访问令牌。可以这样做:`$trakt->auth->token($code);`

但是,当您还没有运行网站时,您无法指定返回URL。为了在Trakt网站上显示代码,您需要告诉Trakt您想重定向到它们自己并显示您需要获取访问令牌的代码。您可以通过提供以下字符串作为重定向URL来完成此操作:urn:ietf:wg:oauth:2.0:oob。只有在没有本地开发机器运行时才需要这样做。

假设您的客户端ID是 12345678,您的客户端密钥是 secret01,并且您使用具有主机名 trakt.dev 的本地开发机器。现在,您可以将 trakt.dev/trakt/auth 设置为我们的重定向URL。

有了这个,您可以从一个路由创建一个,比如它是您的索引路由。

<?php

//... initiate Auth

$auth = $trakt->auth->authorize();

//route: trakt/auth
$token = $trakt->auth->token($_GET['code']);

现在,当您通过OAuth流程进行操作时,您会在屏幕上看到您的令牌(一个 League\OAuth2\Client\Token\AccessToken 实例)被输出。将令牌中的值存储在某个地方,以便在用户需要时可以重新创建它。您可以通过使用 $trakt->auth->createToken() 并传递所需的参数 $token$type$expires$refresh$scope 来完成此操作。这将返回一个 League\OAuth2\Client\Token\AccessToken 实例,您可以将它传递给需要(可选)令牌的方法。

使用API包装器

现在,您有了访问令牌,您可以使用它通过 Trakt 类从trakt.tv检索特定用户的数据。

<?php

//initialize Auth here...

$trakt = new Trakt($auth);
$token = $trakt->auth->createToken($token, $type, $expires, $refresh, $scope);

$settings = $trakt->users->settings($token);
$comment = $trakt->comments->get($commentId);
$movie = $trakt->search->byId($type, $id);
$movie = $trakt->search->byId($type, $id, $token); //can be with, or without token.

分页和扩展信息

为了利用扩展信息和分页功能,您必须在调用端点之前设置页面或扩展信息级别。以下是一个示例

<?php
$trakt->movies->page(2)->collected(); //this will get the second page of the /movies/collected endpoint
//when you want to specify a limit
$trakt->movies->page(2)->limit(15)->collected(); //this will give you the second page, with 15 items

扩展信息以相同的方式处理

<?php

$trakt->movies->withImages()->collected();//this will give you all kinds of extra images
//or
$trakt->movies->withFull()->collected(); //this will give you a lot of extra data

您也可以将所有这些结合起来

<?php
$response = trakt->movies
    ->page(2)
    ->withImages()
    ->withFull()
    ->limit(20)
    ->collected();
    

响应现在将是 movies/collected 端点的第二页,包含所有图像,每页限制20个项目。

请随时联系我或帮助开发 :)