wojto/php-instagram-api

PHP 5.3+ 版本的 Instagram API

dev-master 2018-04-18 15:03 UTC

This package is not auto-updated.

Last update: 2024-09-20 04:34:01 UTC


README

#PHP Instagram API

这是一个适用于 PHP 5.3+ 的 Instagram API 包装器,用于访问 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' );