nntmux/ trakt
Trakt API包装器
Requires
- php: >=7.2
- guzzlehttp/guzzle: ~6.3.0
- illuminate/support: ~5.6
- league/oauth2-client: ~2.3.0
- league/uri: ^5.2.0
- nesbot/carbon: ~1.2
- roave/security-advisories: dev-master
Requires (Dev)
- league/flysystem: ^1.0.9
- mockery/mockery: ^1.0
- phpunit/phpunit: ^7.0.1
- psr/log: ^1.0.2
- symfony/console: ^4.0.4
- symfony/var-dumper: v4.0.4
- vlucas/phpdotenv: ^2.4.0
README
注意:此包是现在已弃用的megawubs/trakt-api-wrapper的分支
Trakt-api-wrapper版本2
这是针对他们新API(版本2)的Trakt API包装器。它处于积极开发中
安装
在您的composer.json文件中添加:"nntmux/trakt": "~3.0"
并运行 composer install
或者您可以发出:composer require nntmux/trakt
目标
此包装器的目标是使与Trakt API通信更简单。它旨在简单、易于阅读和在很多情况下可使用。设计为composer包,它可以轻松地安装在大型应用程序中。
Laravel使用
要在Laravel中使用包装器,您只需将NNTmux\Trakt\Providers\Laravel\TraktApiServiceProvider::class
添加到您的config/app.php
文件中的providers
数组中。完成此操作后,使用\NNTmux\Trakt\Trakt
类作为类型提示将其注入到路由或方法中。请参阅此处示例
Route::get( '/', function (\NNTmux\Trakt\Trakt $trakt) { dump($trakt->movies->popular()); } );
非Laravel使用
如果您不使用Laravel,则需要做更多工作才能使其工作。
实例化Trakt API包装器
API包装器需要一个依赖项。即NNTmux\Trakt\Auth
类,它反过来依赖于NNTmux\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令牌后,请执行以下操作。
<?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项。
请随时联系我或帮助开发 :)