emmanueln-nike/instagram

一个易于使用的PHP类,用于laravel项目以使用Instagram的API。

dev-master / 1.0.x-dev 2016-09-09 12:15 UTC

This package is not auto-updated.

Last update: 2024-09-14 19:58:39 UTC


README

更新后的Instagram API for Laravel

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

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

需求

  • PHP 5.3或更高版本
  • cURL
  • 已注册的Instagram应用

开始使用

要使用Instagram API,您需要在Instagram开发者平台注册为开发者并创建一个应用程序。在注册重定向URI之前,请查看uri指南。您将收到您的client_idclient_secret

请注意,Instagram主要指的是”客户端“而不是”应用“。因此,”客户端ID“和”客户端密钥“与”应用密钥“和”应用密钥“相同。

一个好的开始地方是示例项目

安装

强烈建议使用Composer以尽可能平滑地保持更新。

$ composer require "emmanueln-nike/instagram:dev-master"

将服务提供者添加到config/app.php中的提供者数组

$ Emmanueln\Instagram\InstagramServiceProvider::class

配置

运行命令以发布配置文件

$ php artisan vendor:publish --provider="Emmanueln\Instagram\InstagramServiceProvider"

这将在您的配置目录中创建一个instagram.php文件。在此处,您必须输入您的Instagram API密钥、API密钥和回调URL。

初始化类

use Emmanueln\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(<数组>/<字符串>/<null>);

array如果您想对用户进行认证并访问其数据而不使用config/instagram.php

new Instagram(array(
	'apiKey'      => 'YOUR_APP_KEY',
	'apiSecret'   => 'YOUR_APP_SECRET',
	'apiCallback' => 'YOUR_APP_CALLBACK'
));

string如果您只想访问公共数据

new Instagram('YOUR_APP_KEY');

null如果您想对用户进行认证并访问其数据通过config/instagram.php

new Instagram();

注意,使用null,您必须在config/instagram.php文件中设置您的配置

获取登录URL

getLoginUrl(<数组>)

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

可选的作用域参数

获取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()
  • getUserFollower()
  • 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.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 目前不允许过滤视频。

签名头部

为了防止您的访问令牌被盗,Instagram 建议使用 API 秘密的哈希值、调用的端点和参数来对您的请求进行签名。

  1. 在您的 Instagram 客户端设置中激活 "强制签名头部"
  2. 在您的 Instagram 类中启用签名头部
$instagram->setSignedHeader(true);
  1. 您已经准备好!现在,所有请求都将通过签名头部进行安全加密。

有关其工作原理的更多详细说明,请参阅 Instagram API 文档

分页

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

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

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

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

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

重定向 URL 示例

请参阅 Instagram 文档以获取重定向 URI 的示例 Instagram API 文档

示例应用程序

Image

本示例项目位于tests/example/文件夹中,可以帮助您开始。代码有良好的文档记录,并指导您完成OAuth2流程的所有必需步骤。感谢Ricardo de Zoete Pro提供的出色的Instagram图标。

更多示例和教程

如果您也需要分享代码示例,请告诉我。

鸣谢

版权所有(c)2016 - Emmanuel Ikechukwu N.

感谢Christian Metz(初始作者) - http://cosenary.github.com/Instagram-PHP-API

GNU许可协议下发布。