brandembassy/instagram

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

此软件包的官方仓库似乎已消失,因此该软件包已被冻结。

v2.3.3 2016-06-07 12:18 UTC

This package is not auto-updated.

Last update: 2019-05-29 01:56:30 UTC


README

注意: 2015年11月17日,Instagram 对其API进行了更改。在2015年11月17日之前创建的应用程序不会受到影响,直到2016年6月。在2015年11月17日或之后创建的应用程序需要使用其更新的API。请注意,此库尚不支持其新更新。有关更多信息,请参阅 #182

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

Total Downloads Latest Stable Version License

Composer软件包可用。
支持Instagram视频签名头部

要求

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

开始使用

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

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

一个不错的开始地方是示例项目

安装

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

$ composer require brandembassy/instagram

初始化类

use MetzWeb\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(<array>/<string>);

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

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

string 如果您 想访问公开数据

new Instagram('YOUR_APP_KEY');

获取登录URL

getLoginUrl(<array>)

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

可选的作用域参数

作用域 说明 方法
基本 使用所有用户相关方法 [默认] getUser()getUserFeed()getUserFollower() 等等。
关系 关注和取消关注用户 modifyRelationship()
点赞和取消赞内容 getMediaLikes()likeMedia()deleteLikedMedia()
评论 创建或删除评论 getMediaComments()addMediaComment()deleteMediaComment()

获取 OAuth 令牌

getOAuthToken($code, <true>/<false>)

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

设置/获取访问令牌

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

用户方法

公共方法

  • getUser($id)
  • searchUser($name, <$limit>)
  • getUserMedia($id, <$limit>)

认证方法

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

用户端点示例响应。

关系方法

认证方法

  • getUserFollows($id, <$limit>)
  • getUserFollower($id, <$limit>)
  • getUserRelationship($id)
  • modifyRelationship($action, $user)
    • $action : 动作命令(关注/取消关注/屏蔽/取消屏蔽/批准/拒绝)
    • $user : 目标用户 ID
// Follow the user with the ID 1574083
$instagram->modifyRelationship('follow', 1574083);

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

关系端点示例响应。

媒体方法

公共方法

  • getMedia($id)
    • 认证用户会收到信息,所查询的媒体是否被点赞
  • getPopularMedia()
  • searchMedia($lat, $lng, <$distance>, <$minTimestamp>, <$maxTimestamp>)
    • $lat$lng 是坐标,必须是如下的浮点数:48.14544189229033611.568603515625
    • $distance : 米(默认是 1 公里 = 1000,最大是 5 公里 = 5000)
    • $minTimestamp : 所有返回的媒体都将晚于此时间戳(默认:5 天前)
    • $maxTimestamp : 所有返回的媒体都将早于此时间戳(默认:现在)

媒体端点示例响应。

评论方法

公共方法

  • getMediaComments($id)

认证方法

  • addMediaComment($id, $text)
    • 受限访问:请发送电子邮件至 apidevelopers[at]instagram.com 以获取访问权限
  • deleteMediaComment($id, $commentID)
    • 评论必须是由认证用户创建的

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

评论端点示例响应。

标签方法

公共方法

  • getTag($name)
  • getTagMedia($name)
  • searchTags($name)

标签端点示例响应。

赞方法

认证方法

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

如何点赞媒体:示例用法 赞端点示例响应。

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

Instagram视频

Instagram条目通过type属性(imagevideo)进行标记,这允许您识别视频。

如何在Video.js的帮助下嵌入Instagram视频的示例,可以在/example文件夹中找到。

请注意:Instagram目前不允许筛选视频。

签名头

为了防止您的访问令牌被盗,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循环进行迭代。

重定向URL的示例

已注册的重定向URI 发送到/authorize的重定向URI 有效吗?
http://yourcallback.com/ http://yourcallback.com/
http://yourcallback.com/ http://yourcallback.com/?this=that
http://yourcallback.com/?this=that http://yourcallback.com/
http://yourcallback.com/?this=that http://yourcallback.com/?this=that&another=true
http://yourcallback.com/?this=that http://yourcallback.com/?another=true&this=that
http://yourcallback.com/callback http://yourcallback.com/
http://yourcallback.com/callback http://yourcallback.com/callback/?type=mobile

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

事件

如果您需要记录通过API的通信,您可以使用在curl_exec完成后触发的onResponse事件。

$instagram = new Instagram($apiKey);
$instagram->setAccessToken($token);
$instagram->onResponse[] = function ($apiCall, array $params = null, $method, $jsonData) {
	$message = sprintf('%s %s [%s] -> %s', $method, $apiCall, $params !== null ? implode(', ', $params) : 'null', $jsonData);
	$this->yourLogger->log($message);
};

示例应用

Image

此示例项目位于example/文件夹中,可帮助您入门。代码有良好的文档记录,并带您通过OAuth2过程的所有必需步骤。感谢Ricardo de Zoete Pro提供的Instagram图标。

更多示例和教程

如果您需要分享代码示例,请告诉我。

变更日志

有关更多信息,请参阅变更日志文件

致谢

版权(c)2011-2015 - 由Christian Metz编写

BSD许可证下发布。