andreyco/instagram

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

4.1.1 2017-12-17 18:13 UTC

This package is not auto-updated.

Last update: 2024-09-14 15:37:28 UTC


README

instagram-logo-400x400

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.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 秘密的散列、调用端点和参数来对您的请求进行签名。

  1. 在您的 Instagram 客户端设置中激活 "强制签名头"
  2. 在您的 Instagram 类中启用签名请求
$instagram->setEnforceSignedRequests(true);

分页

每个端点都有一个最大结果范围,因此增加 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 图标。

更多示例和教程

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

发行说明

您可以在 这里找到发行说明

鸣谢

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

Instagram-PHP-API 包含了从 Christian Metz 的 Instagram-PHP-API 中获取的代码,同样也遵循 BSD 许可证