sofwar/instagram

一个易于使用的PHP类,用于访问Instagram的API。

1.0.0 2016-09-24 14:48 UTC

This package is auto-updated.

Last update: 2024-08-28 23:08:37 UTC


README

Instagram API的PHP包装器。欢迎反馈或错误报告。

有可用的Composer包。

需求

  • PHP 5.4或更高版本
  • cURL
  • 已注册的Instagram应用程序

开始使用

要使用Instagram API,您需要在Instagram开发者平台注册为开发者并创建一个应用程序。在注册重定向URI之前,请查看URI指南。您将收到您的client_idclient_secret

请注意,Instagram主要指的是”客户端“而不是”应用程序“。因此,”Client ID“和”Client Secret“与”App Key“和”App Secret“相同。

安装

我强烈建议使用Composer以尽可能平滑地更新。

$ composer require sofwar/instagram

初始化类

use SofWar\Instagram\Instagram;

$instagram = new Instagram(array(
	'apiKey'      => 'YOUR_APP_KEY',
	'apiSecret'   => 'YOUR_APP_SECRET',
	'apiCallback' => 'YOUR_APP_CALLBACK'
));

echo "<a href='{$instagram->getLoginUrl()}'>Login with Instagram</a>";

用户认证(OAuth2)

// grab OAuth callback code
$code = $_GET['code'];
$data = $instagram->getOAuthToken($code);

echo 'Your username is: ' . $data->user->username;

获取用户点赞

// set user access token
$instagram->setAccessToken($data);

// get all user likes
$likes = $instagram->getUserLikes();

// take a look at the API response
echo '<pre>';
print_r($likes);
echo '<pre>';

所有方法都返回API数据json_decode() - 因此您可以直接访问数据。

可用方法

设置Instagram

new Instagram(<数组>/<字符串>);

数组如果您想认证用户并访问其数据

new Instagram(array(
	'apiKey'      => 'YOUR_APP_KEY',
	'apiSecret'   => 'YOUR_APP_SECRET',
	'apiCallback' => 'YOUR_APP_CALLBACK'
));

字符串如果您想访问公共数据

new Instagram('YOUR_APP_KEY');

获取登录URL

getLoginUrl(<数组>)

getLoginUrl(array(
	'basic',
	'likes'
));

获取OAuth令牌

getOAuthToken($code, <布尔值>)

true : 仅返回OAuth令牌 false [默认] : 返回OAuth令牌和已认证用户的个人资料数据

设置/获取访问令牌

  • 设置访问令牌,用于后续方法调用:setAccessToken($token)
  • 获取访问令牌,如果您想将其存储以供以后使用:getAccessToken()

用户方法

  • getUser(<$id>)
  • searchUser($name, <$limit>)
  • getUserMedia($id, <$limit>)
  • getUserLikes(<$limit>, <$max_like_id>)
  • getUserMedia(<$id>, <$limit>)
    • 如果未定义$id或等于'self',则返回登录用户的媒体

用户端点的示例响应。

关系方法

  • getUserFollows(<$limit>)
  • getUserFollower(<$limit>)
  • getUserRelationship($id)
  • modifyRelationship($action, $user)
    • $action : 操作命令(关注/取消关注/批准/忽略)
    • $user : 目标用户ID
// Follow the user with the ID 1521204717
$instagram->modifyRelationship('follow', 1521204717);

请注意,modifyRelationship()方法需要relationships 范围

关系端点的示例响应。

媒体方法

  • getMedia($id)
  • getMediaShort($code)
  • searchMedia($lat, $lng, <$distance>)

媒体端点的示例响应。

评论方法

  • getMediaComments($id)
  • addMediaComment($id, $text)
  • deleteMediaComment($id, $commentID)

请注意,认证方法需要comments 范围

评论端点的示例响应。

标签方法

  • getTag($name)
  • getTagMedia($name, <$limit>, <$min_tag_id>, <$max_tag_id>)
  • searchTags($name)

标签端点的示例响应。

点赞方法

认证方法

  • getMediaLikes($id)
  • likeMedia($id)
  • deleteLikedMedia($id)

点赞端点示例响应。

所有 <...> 参数都是可选的。如果未定义限制,则返回所有可用的结果。

签名头

为了防止您的访问令牌被盗,Instagram 建议您使用 API 秘密的哈希值、调用端点和参数来对您的请求进行签名。

  1. 在您的 Instagram 客户端设置中激活 "强制签名头"
  2. 在您的 Instagram 类中启用签名头
$instagram->setSignedHeader(true);
  1. 您已经准备好了!现在,所有请求都将通过签名头进行加密。

Instagram API 文档 中详细了解其工作原理。

分页

每个端点都有一个最大结果范围,因此将 limit 参数增加到限制以上不会有所帮助(例如,getUserMedia() 的限制为 90)。

此时,“分页”功能就派上用场了。只需将一个对象传递给 pagination() 方法,即可接收下一个数据集

$photos = $instagram->getTagMedia('kitten');

$result = $instagram->pagination($photos);

使用 do-while 循环进行迭代。

如果您需要有关端点的更多信息,请查看 Instagram API 文档

变更日志

请参阅 变更日志文件 获取更多信息。

BSD 许可证 下发布。