grafmiville / instagram
一个易于使用的PHP类,用于访问Instagram的API。
Requires
- php: >=5.2.0
- ext-curl: *
This package is not auto-updated.
Last update: 2024-09-21 17:34:26 UTC
README
关于
Instagram API的PHP包装器。欢迎反馈或错误报告。
Composer包可用。
支持Instagram视频和签名头部。
需求
- PHP 5.2.x或更高版本
- cURL
- 已注册的Instagram应用
开始使用
要使用Instagram API,您需要在Instagram开发者平台注册为开发者并创建一个应用。在注册重定向URI之前,请查看uri指南。您将收到您的client_id和client_secret。
请注意,Instagram主要指的是”客户端“而不是”应用“。因此,”客户端ID“和”客户端密钥“与”应用密钥“和”应用密钥“相同。
开始的好地方是示例项目。
安装
我强烈建议使用Composer以尽可能平滑地保持更新。
初始化类
<?php
require_once 'Instagram.php';
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)
<?php
// grab OAuth callback code
$code = $_GET['code'];
$data = $instagram->getOAuthToken($code);
echo 'Your username is: ' . $data->user->username;
?>
获取用户点赞
<?php
// 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如果您想验证用户并访问其数据
new Instagram(array(
'apiKey' => 'YOUR_APP_KEY',
'apiSecret' => 'YOUR_APP_SECRET',
'apiCallback' => 'YOUR_APP_CALLBACK'
));
string如果您仅想访问公开数据
new Instagram('YOUR_APP_KEY');
获取登录URL
getLoginUrl(<数组>)
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
<?php
// 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.145441892290336,11.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 属性(image 或 video),这允许您识别视频。
如何使用 Video.js 嵌入Instagram视频的示例可以在 /example 文件夹中找到。
请注意:Instagram目前不允许过滤视频。
签名头
为了防止您的访问令牌被盗,Instagram建议您使用您的API密钥和IP地址的哈希值对请求进行签名。
- 在您的Instagram客户端设置中激活 "强制签名头"。
- 在您的Instagram类中启用签名头
$instagram->setSignedHeader(true);
- 现在您可以开始了!现在,所有您的
POST和DELETE请求都将使用签名头进行加密。
在 Instagram API 文档 中详细了解其工作原理。
分页
每个端点都有一个最大结果范围,因此将 limit 参数增加到限制以上是没有帮助的(例如,getUserMedia() 的限制为 90)。
此时,“分页”功能就会派上用场。只需将一个对象传递给 pagination() 方法,就可以接收下一个数据集
<?php
$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 文档。
示例应用

此示例项目位于 example/ 文件夹中,可以帮助您开始。代码具有良好的文档,并引导您完成OAuth2过程的全部步骤。出色的Instagram图标归功于Ricardo de Zoete Pro。
更多示例和教程
如果您需要分享代码示例,请告诉我。
历史
3.0版本正在开发中,包括对实时订阅的支持。
Instagram 2.2 - 04/10/2014
功能添加了“强制使用签名头”功能实现了PSR4自动加载。更新将超时时间从5秒增加到20秒更新修改了类名、包名
Instagram 2.1 - 30/01/2014
更新在searchMedia()中添加了 min 和 max_timestamp更新为getUserMedia()方法添加了公开认证修复支持不一致的分页返回类型(关系端点)
Instagram 2.0 - 24/12/2013
发布版本2.0
Instagram 2.0测试版 - 20/11/2013
功能添加了 位置 端点更新更新示例项目以显示Instagram视频
Instagram 2.0 alpha 4 - 01/11/2013
功能实现了评论端点功能新增了一个带花哨GUI的示例更新改进了文档
Instagram 2.0 alpha 3 - 04/09/2013
合并合并了主分支更新更新更新了文档错误/更改禁用了 cURL CURLOPT_SSL_VERIFYPEER(修复了 #6, #7, #8, #16)功能添加了 cURL 错误消息功能在getTagMedia()方法中添加了limit
Instagram 2.0 alpha 2 - 14/06/2013
功能改进了分页功能更改在searchMedia()方法中添加了distance参数(感谢 @jonathanwkelly)
Instagram 2.0 alpha 1 - 28/05/2012
功能添加了分页方法功能添加了用户关系端点功能为getLoginUrl()方法添加了作用域参数表
Instagram 1.5 - 31/01/2012
发布第二个主版本功能添加了标签端点更改编辑了“开始”示例更改现在您可以直接将getOAuthToken()对象传递给setAccessToken()
Instagram 1.0 - 20/11/2011
发布第一次公开发布功能添加了带有文档代码的示例应用更新新增了详细的文档
Instagram 0.8 - 16/11/2011
发布第一个初始发布版本功能使用配置数组或字符串初始化类(参见示例)
Instagram 0.5 - 12/11/2011
发布测试版更新小型文档
鸣谢
版权所有 (c) 2011-2014 - 由Christian Metz编写
在BSD许可证下发布。
