grafmiville/instagram

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

dev-master 2018-02-14 09:01 UTC

This package is not auto-updated.

Last update: 2024-09-21 17:34:26 UTC


README

cosenary/Instagram-PHP-API分叉

关于

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

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

需求

  • PHP 5.2.x或更高版本
  • cURL
  • 已注册的Instagram应用

开始使用

要使用Instagram API,您需要在Instagram开发者平台注册为开发者并创建一个应用。在注册重定向URI之前,请查看uri指南。您将收到您的client_idclient_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.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密钥和IP地址的哈希值对请求进行签名。

  1. 在您的Instagram客户端设置中激活 "强制签名头"
  2. 在您的Instagram类中启用签名头
  $instagram->setSignedHeader(true);
  1. 现在您可以开始了!现在,所有您的 POSTDELETE 请求都将使用签名头进行加密。

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 文档

示例应用

Image

此示例项目位于 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许可证下发布。

Bitdeli Badge