shoplo / php-instagram-api
PHP 5.3+ 版本的 Instagram API
Requires
- php: >=5.3.0
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 对象并传递 API 的信息
$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()
来区分图片和视频。这将返回 video
或 image
。视频文件可以通过 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' );