brandembassy / instagram
一个易于使用的PHP类,用于访问Instagram的API。
此软件包的官方仓库似乎已消失,因此该软件包已被冻结。
Requires
- php: >=5.3.0
- ext-curl: *
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包装器。欢迎反馈或错误报告。
有Composer软件包可用。
支持Instagram视频和签名头部。
要求
- PHP 5.3或更高版本
- cURL
- 已注册的Instagram应用程序
开始使用
要使用Instagram API,您必须在Instagram开发者平台注册为开发者并创建一个应用程序。在注册重定向URI之前,请查看URI指南。您将收到您的 client_id
和 client_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.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密钥的哈希值、调用端点和参数来签名您的请求。
- 在您的Instagram客户端设置中激活"强制签名头"。
- 在您的Instagram类中启用签名头
$instagram->setSignedHeader(true);
- 您已经准备就绪!现在,所有您的请求都将通过签名头进行安全加密。
有关其工作原理的更多详细信息,请参阅Instagram API文档。
分页
每个端点都有一个最大结果范围,因此增加超过限制的limit
参数将不会有所帮助(例如,getUserMedia()
的限制为90)。
这就是“分页”功能发挥作用的地方。只需将一个对象传递给pagination()
方法,即可获取下一个数据集。
$photos = $instagram->getTagMedia('kitten'); $result = $instagram->pagination($photos);
使用do-while
循环进行迭代。
重定向URL的示例
如果您需要有关端点的更多信息,请参阅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); };
示例应用
此示例项目位于example/
文件夹中,可帮助您入门。代码有良好的文档记录,并带您通过OAuth2过程的所有必需步骤。感谢Ricardo de Zoete Pro提供的Instagram图标。
更多示例和教程
如果您需要分享代码示例,请告诉我。
变更日志
有关更多信息,请参阅变更日志文件。
致谢
版权(c)2011-2015 - 由Christian Metz编写
在BSD许可证下发布。