pecee/instagram-sdk

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

3.3.1 2016-01-15 20:25 UTC

This package is auto-updated.

Last update: 2024-08-25 12:16:36 UTC


README

#Image Instagram PHP API v3.3.0

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

现在支持 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支持。以下步骤是设置此包所需的。

配置应用

// publish configration file
php artisan config:publish andreyco/instagram --path vendor/andreyco/instagram/src/Support/Laravel/config

// Edit app/config/packages/andreyco/instagram/config/config.php
array (
	'clientId'     => 'APPLICATION_ID',
	'clientSecret' => 'APPLICATION_SECRET',
	'redirectUri'  => 'AUTH_REDIRECT',
  'scope'        => array('basic'),
)

添加服务提供者和注册门面

'providers' => array(
    'Andreyco\Instagram\Support\Laravel\ServiceProvider\Instagram',
),

'aliases' => array(
    'Instagram' => 'Andreyco\Instagram\Support\Laravel\Facade\Instagram',
),
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>/<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>,<string>)

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

可选的作用域参数:有关作用域的更多信息,请访问 https://www.instagram.com/developer/authorization/

获取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.14544189229033611.568603515625
    • $distance 径向距离(单位:米)(默认为 1km = 1000,最大为 5km = 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 目前不允许过滤视频。

分页

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

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

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

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

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

重定向 URL 的示例

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

示例应用

Image

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

更多示例和教程

如果需要分享代码示例,请告知。

历史记录

Instagram 3.2.0 - 09/07/2014

  • 功能 通过客户端构造函数添加设置应用范围权限选项。
  • 功能 您可以为 getLoginUrl 方法提供一个可选的状态参数,以防止 CSRF。
  • 功能 抛出特定的异常而不是通用异常(对于处理多个错误情况很有用)。

Instagram 3.1.0 - 09/07/2014

  • 功能 支持开箱即用的 Laravel(但仍为框架无关)。

Instagram 3.0.0 - 2014年8月7日

  • 功能 PSR-4 自动加载,发布 Composer 包

Instagram 2.1 - 2014年1月30日

  • 更新searchMedia() 方法中添加了 min 和 max_timestamp
  • 更新getUserMedia() 方法添加了公共身份验证
  • 修复 支持不一致的分页返回类型(关系端点

Instagram 2.0 - 2013年12月24日

  • 发布 版本 2.0

Instagram 2.0 测试版 - 2013年11月20日

  • 功能 添加了 位置 端点
  • 更新 更新示例项目以显示 Instagram 视频

Instagram 2.0 alpha 4 - 2013年11月1日

  • 功能 实现了评论端点
  • 功能 新增了一个具有华丽 GUI 的示例
  • 更新 改进了文档

Instagram 2.0 alpha 3 - 2013年9月4日

  • 合并 合并主分支更新
    • 更新 更新文档
    • bug / change 禁用 cURL CURLOPT_SSL_VERIFYPEER(修复 #6, #7, #8, #16)
    • 功能 添加了 cURL 错误消息
    • 功能getTagMedia() 方法中添加了 limit

Instagram 2.0 alpha 2 - 2013年6月14日

  • 功能 改进了分页功能
  • 变更searchMedia() 方法中添加了 distance 参数(感谢 @jonathanwkelly)

Instagram 2.0 alpha 1 - 2012年5月28日

  • 功能 添加了分页方法
  • 功能 添加了用户关系端点
  • 功能getLoginUrl() 方法添加了作用域参数表

Instagram 1.5 - 2012年1月31日

  • 发布 第二个主版本
  • 功能 添加了标签端点
  • 变更 编辑了 "入门" 示例
  • 变更 现在可以直接将 getOAuthToken() 对象传递给 setAccessToken()

Instagram 1.0 - 2011年11月20日

  • 发布 第一次公开发布
  • 功能 添加了带文档代码的示例 App
  • 更新 新增详细文档

Instagram 0.8 - 2011年11月16日

  • 发布 第一次初始发布版本
  • 功能 使用配置数组或字符串初始化类(见示例)

Instagram 0.5 - 2011年11月12日

  • 发布 测试版
  • 更新 简短文档

致谢

版权(c)2014 - Andrej Badin 在 BSD 许可证 下发布。

Instagram-PHP-API 包含了从 Christian Metz 的 Instagram-PHP-API 中取出的代码,也根据 BSD 许可证 许可。