amirsarhang/instagram-php-sdk

这是PHP的Instagram Graph SDK。使用这个包,您可以轻松地发出所有Instagram Graph API请求,如身份验证和CRUD操作。我们还将定期增加更多方法。

2.0.0 2022-10-06 16:49 UTC

This package is auto-updated.

Last update: 2024-09-06 20:55:13 UTC


README

Source Code Latest Version Software License PHP Version Total Downloads

这是PHP的Instagram Graph SDK。

使用这个包,您可以轻松地发出所有Instagram Graph API请求,如身份验证和CRUD操作。我们还将定期增加更多方法。

本项目遵守贡献者行为准则。参与本项目及其社区,您需要遵守此准则。

安装

推荐通过Composer进行安装。运行以下命令安装包并将其添加到项目中的composer.json文件:

composer require amirsarhang/instagram-php-sdk

或者将以下内容添加到您的composer.json文件中:

"require": {
      "amirsarhang/instagram-php-sdk": "2.0.0"
},

文档

要求

*请记住,您需要经过验证的Facebook APP才能使用此SDK。
FACEBOOK_APP_ID
FACEBOOK_APP_SECRET

配置

将这些值放入您的.env文件中

FACEBOOK_APP_ID="<YOUR_FACEBOOK_APP_ID>" // Get it from your FB developer dashboard
FACEBOOK_APP_SECRET="<YOUR_FACEBOOK_APP_SECRET>" // Get it from your FB developer dashboard
FACEBOOK_GRAPH_VERSION="v10.0" // Your Graph version >= v10.0
INSTAGRAM_CALLBACK_URL="https://yoursite.com/instagram/callback" // Instagram callback after login

身份验证 & 登录

use Amirsarhang\Instagram;
...
public function login()
{
    // Go to FB Documentations to see available permissions
    $permissions = [
        'instagram_basic',
        'pages_show_list',
        'instagram_manage_comments',
        'instagram_manage_messages',
        'pages_manage_engagement',
        'pages_read_engagement',
        'pages_manage_metadata'
    ];
    
    // Generate Instagram Graph Login URL
    $login = (new Instagram())->getLoginUrl($permissions);
    
    // Redirect To Facebook Login & Select Account Page
    return header("Location: ".$login);
}
  • 请记住,您添加的权限需要经过Facebook的验证。

这里您可以找到Facebook权限。

在您的数据库中生成并保存用户访问令牌。

use Amirsarhang\Instagram;
...
public function callback()
{
    // Generate User Access Token After User Callback To Your Site
    return Instagram::getUserAccessToken();
}

然后,我们就可以生成页面访问令牌了,但首先我们需要获取用户选择的所有页面,然后将它们展示给用户,让用户选择哪个页面的访问令牌应该保存到数据库中。

use Amirsarhang\Instagram;
...
public function instagramAccounts(): array
{
    $token = "<USER_ACCESS_TOKEN>"; // We got it in callback
    $instagram = new Instagram($token);

    // Will return all instagram accounts that connected to your facebook selected pages.
    return $instagram->getConnectedAccountsList(); 
}

示例响应

[
"success": "true",
"instagramAccounts": [
{
  "name": "Test Page",
  "biography": "This is Test account",
  "username": "username",
  "followers_count": 167000,
  "follows_count": 1,
  "media_count": 231,
  "profile_picture_url": "https://scontent.fist6-1.fna.fbcdn.net/v/123.jpg?_nc_cat=109&ccb=1-5&_nc_sid=86c713&_nc_ohc=Gnf5d6wdF3UAX8jVBUl&_nc_ht=scontent.fist6-1",
  "id": "17841111111111111",
  "fb_page_id": "108011111111111",
  "fb_page_access_token": "EAAWq8obOe68BAA1r8GUHqOvVZHDY&WFWKHBDfJrjPswLuMb4E8ZCxCRvNW37bt9tslaBBRbTv"
},
{
  "name": "Test Page2",
  "biography": "This is other Test account",
  "username": "username2",
  "followers_count": 1200,
  "follows_count": 22,
  "media_count": 23,
  "profile_picture_url": "https://scontent.fist6-1.fna.fbcdn.net/v/456.jpg?_nc_cat=109&ccb=1-5&_nc_sid=86c713&_nc_ohc=Gnf5d6wdF3UAX8jVBUl&_nc_ht=scontent.fist6-1",
  "id": "17841222222222222",
  "fb_page_id": "108022222222222",
  "fb_page_access_token": "XXREWDY&WFWKHBDfJrjPswLuMb4E8ZCxCRvNW37bt9tslBCFEZDZD"
}]
]

在您的数据库中存储用户选择的页面数据后,您需要调用subscribeWebhook()来为该页面注册实时事件。

use Amirsarhang\Instagram;
...
public function registerWebhook()
{
    $token = "<FACEBOOK_PAGE_ACCESS_TOKEN>";
    $fb_page_id= "<FACEBOOK_PAGE_ID>";
    $instagram = new Instagram($token);

    // Default subscribe with email field
    return $instagram->subscribeWebhook($fb_page_id, $token);
    
    // You can pass your needed fields as an Array in the last parameter.
    // Your app does not receive notifications for changes to a field
    // unless you configure Page subscriptions in the App Dashboard and subscribe to that field.
    return $instagram->subscribeWebhook($fb_page_id, $token, ["email", "feed", "mentions"]);
}

有关页面订阅的更多详细信息,请查看链接

用法

use Amirsarhang\Instagram;
...
public function userInfo()
{

    $instagram = new Instagram($access_token);

    $endpoint = '/me?fields=id,name';

    return $instagram->get($endpoint);

}
  • 如果您的请求在graphEdge上,您可以在第二个参数中将$instagram->get($endpoint, true)传递为true

方法

评论方法

获取评论数据

// Get default Comment fields data (Timestamp, text, id)
$get_comment = $instagram->getComment($comment_id);

// If you need other fields you can send them as array
$get_comment = $instagram->getComment($comment_id, ['media','like_count']);

return $get_comment;

添加评论

return $instagram->addComment($recipient_id, 'Test Reply');

删除评论

return $instagram->deleteComment($comment_id);

隐藏 & 取消隐藏评论

return $instagram->hideComment($comment_id, true); // false for UnHide

消息方法

获取消息数据

// Get default Message fields data (message, from, created_time, attachments, id)
$get_message = $instagram->getMessage($message_id);

// If you need other fields you can send them as array
$get_message = $instagram->getMessage($message_id, ['attachments','from']);

return $get_message;

发送文本消息(直接消息)

return $instagram->addTextMessage($recipient_id, 'Test DM');

发送媒体消息(直接消息)

return $instagram->addMediaMessage($recipient_id, '<IMAGE_URL>');

我将尽快添加更多有用的方法 :)

查看文档网站以获取详细信息和方法示例。

贡献

欢迎贡献!请阅读贡献指南以获取详细信息。

版权和许可

amirsarhang/instagram-php-sdk 库版权 © Amirhossein Sarhangian,并授权在 MIT 许可证(MIT)下使用。请参阅 LICENSE 以获取更多信息。