andreyco / instagram
一个易于使用的PHP类,用于访问Instagram的API。
Requires
- php: >=5.3.0
- ext-curl: *
README
Instagram PHP API 4.1.1
Instagram API的PHP包装器。欢迎反馈或错误报告。
支持Laravel 5.3, 5.4 & 5.5
现在支持Instagram视频响应。
要求
- 已注册的Instagram应用
- PHP 5.3或更高版本
- cURL
开始使用
要使用OAuth通过Instagram API,您必须在该Instagram开发者平台上注册为开发者并设置应用。在注册重定向URI之前,请参阅uri指南。
请注意,Instagram主要指的是“客户端”而不是“应用”。因此,“客户端ID”和“客户端密钥”与“应用密钥”和“应用密钥”相同。
一个很好的开始地方是示例应用。
初始化类
纯PHP
<?php require '../vendor/autoload.php'; $instagram = new Andreyco\Instagram\Client(array( 'apiKey' => 'YOUR_APP_KEY', 'apiSecret' => 'YOUR_APP_SECRET', 'apiCallback' => 'YOUR_APP_CALLBACK', 'scope' => array('basic'), )); echo "<a href='{$instagram->getLoginUrl()}'>Login with Instagram</a>"; ?>
Laravel
此包自带Laravel支持。以下步骤是设置此包所需的。
安装
composer require andreyco/instagram
添加服务提供程序并注册外观
'providers' => array( // ... Andreyco\Instagram\Support\Laravel\ServiceProvider\Instagram::class, // ... ), 'aliases' => array( // ... 'Instagram' => Andreyco\Instagram\Support\Laravel\Facade\Instagram::class, // ... ),
配置
// Pushlish configuration file. php artisan vendor:publish --provider="Andreyco\Instagram\Support\Laravel\ServiceProvider\Instagram" // Edit previously created `config/instagram.php` file return [ 'clientId' => '...', 'clientSecret' => '...', 'redirectUri' => '...', 'scope' => ['basic'], ]
用法
在Laravel应用程序中,您可以通过简单地使用Instagram
外观来访问库,例如。
Instagram::getLoginUrl();
对于纯PHP的用法,您必须创建类的实例。
$instagram = new Andreyco\Instagram\Client($config); $instagram->getLoginUrl()
身份验证示例
<?php // Generate and redirect to login URL. $url = Instagram::getLoginUrl(); // After allowing to access your profile, grab authorization *code* when redirected back to your page. $code = $_GET['code']; $data = Instagram::getOAuthToken($code); // Now, you have access to authentication token and user profile echo 'Your username is: ' . $data->user->username; echo 'Your access token is: ' . $data->access_token; ?>
获取用户点赞示例
<?php // Set user access token Instagram::setAccessToken($accessToken); // Get all user likes $likes = Instagram::getUserLikes(); // Take a look at the API response echo '<pre>'; print_r($likes); echo '<pre>'; ?>
可用方法
设置Instagram
new Instagram($config: Array|String);
array
如果您想验证用户并访问其数据
new Instagram([ 'apiKey' => 'YOUR_APP_KEY', 'apiSecret' => 'YOUR_APP_SECRET', 'apiCallback' => 'YOUR_APP_CALLBACK' ]);
string
如果您 仅 想访问公开数据
new Instagram('YOUR_APP_KEY');
获取登录URL
getLoginUrl($scope: [Array], $state: [string])
getLoginUrl(['basic', 'likes'], 'uMFYKG5u6v');
可选的作用域参数:有关作用域的更多信息,请访问 https://www.instagram.com/developer/authorization/
获取OAuth令牌
getOAuthToken($code, <true>/<false>)
true
: 仅返回OAuth令牌 false
[默认] : 返回OAuth令牌和已验证用户的个人资料数据
设置/获取访问令牌
设置访问令牌,用于进一步的方法调用: setAccessToken($token)
返回访问令牌,如果您想将其存储以供以后使用: getAccessToken()
用户方法
getUser()
getUser($id)
searchUser($name, <$limit>)
getUserMedia($id, <$limit>)
getUserLikes(<$limit>)
getUserMedia(<$id>, <$limit>)
- 如果未定义
$id
或等于self
,则返回登录用户的媒体
- 如果未定义
关系方法
getSelfFollows()
getSelfFollowedBy()
getUserRelationship($id)
modifyRelationship($action, $user)
$action
: 动作命令(关注/取消关注/屏蔽/取消屏蔽/批准/拒绝)$user
: 目标用户ID
<?php // Follow the user with the ID 1574083 $instagram->modifyRelationship('follow', 1574083); ?>
请注意,modifyRelationship()
方法需要relationships
作用域。
媒体方法
getMedia($id)
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->setEnforceSignedRequests(true);
分页
每个端点都有一个最大结果范围,因此增加 limit
参数超过限制是没有帮助的(例如,getUserMedia()
的限制为 90)。
这就是 "分页" 功能发挥作用的地方。只需将一个对象传递给 pagination()
方法,就可以接收下一个数据集
<?php $photos = $instagram->getTagMedia('kitten'); $result = $instagram->pagination($photos); ?>
使用 do-while
循环进行迭代。
重定向 URL 的示例
如果您需要有关端点的更多信息,请参阅 Instagram API 文档。
示例应用
此示例项目位于 example/
文件夹中,可以帮助您入门。代码经过良好文档化,并带您通过 OAuth2 流程的所有必要步骤。感谢 Ricardo de Zoete Pro 提供的出色的 Instagram 图标。
更多示例和教程
如果需要分享代码示例,请告知。
发行说明
您可以在 这里找到发行说明
鸣谢
版权 (c) 2014 - Andrej Badin 在 BSD 许可证 下发布。
Instagram-PHP-API 包含了从 Christian Metz 的 Instagram-PHP-API 中获取的代码,同样也遵循 BSD 许可证。