shoplo/php-instagram-api

PHP 5.3+ 版本的 Instagram API

dev-master 2018-04-23 07:00 UTC

This package is not auto-updated.

Last update: 2024-09-18 04:18:30 UTC


README

#PHP Instagram API

这是一个 PHP 5.3+ 版本的 Instagram API 的封装器

API 包含一个 cURL 客户端(Instagram\Net\CurlClient),用于访问 Instagram API。您可以创建自己的客户端,只需实现 Instagram\Net\ClientInterface

##API

所有访问 API 的方法都可能抛出异常。如果 API 请求失败(原因不是访问令牌过期或缺失),则会抛出类型为 \Instagram\Core\ApiException 的异常。如果 API 请求失败是因为访问令牌过期或缺失,则会抛出类型为 \Instagram\Core\ApiAuthException 的异常。您可以使用此功能重定向到您的授权页面。

##身份验证

$auth_config = array(
    'client_id'         => '',
    'client_secret'     => '',
    'redirect_uri'      => '',
    'scope'             => array( 'likes', 'comments', 'relationships' )
);

$auth = new Instagram\Auth( $auth_config );
  • 然后您需要让用户授权您的应用程序

$auth->authorize();
  • 这会将用户重定向到 Instagram 授权页面。授权后,Instagram 将将用户重定向到 $auth_config['redirect_uri'] 中的 URL,并带有您需要用来获取访问令牌的代码

$_SESSION['instagram_access_token'] = $auth->getAccessToken( $_GET['code'] );
  • 然后在您的代码中使用访问令牌

$instagram = new Instagram\Instagram;
$instagram->setAccessToken( $_SESSION['instagram_access_token'] );
$current_user = $instagram->getCurrentUser();

##基本用法

$instagram = new Instagram\Instagram( $_SESSION['instagram_access_token'] );
$user = $instagram->getUser( $user_id );
$media = $instagram->getMedia( $media_id );
$tag = $instagram->getTag( 'mariokart' );
$location = $instagram->getLocation( 3001881 );
$current_user = $instagram->getCurrentUser();

##当前用户

当前用户对象将为您提供当前登录的用户

$current_user = $instagram->getCurrentUser();

使用此对象,您可以

  • 关注、取消关注、屏蔽和解除屏蔽用户

$current_user->follow( $user );
$current_user->unfollow( $user );
$current_user->block( $user );
$current_user->unblock( $user );
  • 获取用户的动态、点赞内容、关注请求

$feed = $current_user->getFeed();
$liked_media = $current_user->getLikedMedia();
  • 忽略和批准关注请求

$current_user->ignoreFollowRequest( $user );
$current_user->approveFollowRequest( $user );

您还可以执行在普通用户上可以执行的所有功能

##获取媒体

用户、标签、位置和当前用户都与媒体相关联。

这将返回来自 4 个对象的最新媒体

$user->getMedia();
$tag->getMedia();
$location->getMedia();
$current_user->getMedia();

您可以向 getMedia() 传递参数数组。这些参数将直接传递给 API。请检查 API 以获取可用参数的列表。

$user->getMedia(
    array( 'count' => 3 )
);
$tag->getMedia(
    array( 'max_tag_id' => $max_tag_id )
);
$location->getMedia(
    array( 'max_id' => $max_id )
);

##图片和视频

您可以使用 Media::getType() 来区分图片和视频。这将返回 videoimage。视频文件可以通过 Media::getStandardResVideo()Media::getLowResVideo() 访问。视频上的图像方法将返回视频的静态图像。

##集合

当调用返回多个对象的函数时(例如 getMedia(), searchUsers()),将返回集合对象。集合可以迭代、计数和访问,就像数组一样。

$user = $instagram->getUser( $user_id );
$media = $user->getMedia();
foreach( $media as $photo ) {
     ...
}
$media_count = count( $media );
$first_photo = $media[0];

集合对象有时会有一个指向“下一页”的标识符,可以用来获取集合的下一页。

要获取下一页的标识符,请在集合对象上调用 getNext()

例如

$user = $instagram->getUser( $user_id );
$media = $user->getMedia();
$next_page = $media->getNext();

示例用法

<a href="user_media.php?max_id=<?php echo $next_page ?>">

user_media.php 中,您会在获取用户媒体时检查是否有下一页。

$user = $instagram->getUser( $user_id );
$params = isset( $_GET['max_id'] ) ? array( 'max_id' => $_GET['max_id'] ) : null;
$media = $user->getMedia( $params );

不幸的是,API 方法需要不同的参数来传递,以便获取下一组结果(例如,标签需要 max_tag_id 参数)。

##搜索

您可以搜索位置、媒体、标签和用户。

$locations = $instagram->searchLocations( $lat, $lng );
$media = $instagram->searchMedia( $lat, $lng );
$tags = $instagram->searchTags( 'tag' );
$users = $instagram->searchUsers( 'username' );