webmakersteve / instagram
与Instagram API交互的库
Requires
- guzzlehttp/guzzle: ^6.1
Requires (Dev)
- phpunit/phpunit: ^5.1
- vlucas/phpdotenv: ^2.2
This package is not auto-updated.
Last update: 2024-09-20 10:12:25 UTC
README
又一个Instagram库。我之前依赖的旧库已经过时了,所以我开始重新编写它。
贡献
到目前为止,它有用户端点。很高兴接受任何pull请求。添加新端点非常简单。看看代码中的一个
public function getUserMedia($id = 'self', $limit = null, $min = false, $max = false) { return $this->doRequest('users/:id/media/recent', self::METHOD_GET, [ 'count' => $this->getLimitSize($limit), 'id' => $id, 'min_id' => $min, 'max_id' => $max ]); }
没错。截至 1/5
的路由声明甚至支持参数替换。任何在路由中找到的参数都将从请求构建的其余部分中删除。它还删除了错误的参数,这样你就可以编写更少的逻辑。它进行严格的测试,即,===
。
哇哦。所以,请随意用API的更多方法进行pull请求。我正在尝试将端点参数用作函数参数。我知道可能存在很多参数没有意义的情况。在有大量可选参数的情况下,我可能会创建一个关联数组来处理这种情况。
安装
curl -s http://getcomposer.org/installer | php
php composer.phar require webmakersteve/instagram
示例
好吧,无论如何 - 典型的OAuth API流程
$instagram = new Webmakersteve\Instagram\Client([ 'client_id' => 'KINDA SECRET', 'client_secret' => 'ACTUALLY SECRET', 'redirect_uri' => 'http://yourapp.com' // This is necessary to use the OAuth flow. ]);
当我们有美丽的客户端时,API允许你执行公共方法。曾经更多,但现在似乎只有OAuth事务是“公共”的
// Redirect them to the login url $instagram->getLoginUrl(['basic', 'public_content']); // You can add additional scopes in here like this // And when they return... $code = $_GET['code']; $token = $instagram->getOAuthToken($code, true); // True param means don't return the rest of the data $instagram->setAccessToken($token); // Now we have access to special endpoints var_dump($instagram->getUser()); // Should return the user information
很简单。当然,你需要将访问令牌存储在某个地方,并将其放入其中,这样他们就不需要为单个请求进行授权。但这取决于你使用的任何应用程序基础设施。
所有API端点或更重要的doRequest
方法都返回Response
类。这些巧妙的小加载器可以将响应对象转换为在许多情况下更容易处理的东西。
首先,它们可以像stdClass
一样使用,所以如果你想那样做就去做吧。如果有JSON数据,它们会自动解码。如果数据不是JSON,以对象的形式访问它将返回false
。所以,没有讨厌的PHP错误。
你还获得了一些抽象,用于需要访问嵌套属性的情况。当然,如果返回的第一个东西是null,并且你尝试链式调用它,将会出错。我知道API有时会变得很混乱,所以我制作了一个getProperty
函数。这是我最推荐的交互方式。
而不是$data->username
,你会做$data->getProperty('username')
。如果属性存在,你会得到它。如果不存在,它将返回默认值,即''
。你可以将自定义默认值作为第二个参数设置。
更令人兴奋的是,你可以对嵌套属性这样做。$data->getProperty('user.name.first_name')
如果属性存在,你会得到它。这还不支持任何数组索引或其他东西,所以你需要自己处理它,但我认为这不是一个大问题。
有几个异常类。其中包含一些Instagram源数据。它不会盲目地将JSON推入消息中,而是试图真正解析它并给出相关信息。所以,享受吧。
告诉我你的想法。星级很好。pull请求更好。
更多文档
通过实际代码看过去相当简单,也使得查看正在发生的事情变得相当容易。但如果你不想这样做,请查看文档
许可证
遵循MIT许可证。副本包含在仓库中。
:)