amirsarhang / instagram-php-sdk
这是PHP的Instagram Graph SDK。使用这个包,您可以轻松地发出所有Instagram Graph API请求,如身份验证和CRUD操作。我们还将定期增加更多方法。
2.0.0
2022-10-06 16:49 UTC
Requires
- php: >=8.0
- nickdnk/graph-sdk: ^7.0.1
- vlucas/phpdotenv: ^5.3
README
这是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 以获取更多信息。