wubs / trakt
Trakt API 包装器
Requires
- php: >=5.4.7
- guzzlehttp/guzzle: ~5
- illuminate/support: ~5.2
- league/oauth2-client: ~0.8
- league/url: ^3.3
- nesbot/carbon: ~1
Requires (Dev)
- league/flysystem: ^1.0
- mockery/mockery: ^0.9.4
- phpunit/phpunit: ^5.4
- psr/log: ^1.0
- symfony/console: ^2.7
- symfony/var-dumper: v2.7.1
- vlucas/phpdotenv: ^2.0
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个项目。
请随时联系我或帮助开发 :)