Я создаю приложение, которое заполняет базу данных сообщениями Facebook, основываясь на людях, которые в базе данных имеют идентификатор страницы Facebook.Если идентификатор страницы Facebook обнаружен, он извлекает их сообщения и сохраняет сообщения, использующие определенный хэштег, в базу данных.
Моя проблема в том, что API Facebook истекает, и у меня есть только 4или 5 человек в списке на данный момент.Я вижу, что вы можете получить 250 запросов на пользователя, но я не уверен, что правильно использую API для получения сообщений на странице.
Нужно ли, чтобы этот человек входил и личнодать согласие сделать это таким образом?Это на самом деле не работает для того, что я пытаюсь сделать.
Я использую PHP SDK, найденный на Github, ниже мой код.Я следил за ним с помощью Graph Explorer, но в одном я не уверен, как генерировать токен для каждой страницы.
В настоящее время я использую токен вручную, потому что не знаю, какчтобы сгенерировать их для каждой страницы, я попытался просмотреть документы как для Git PHP SDK, так и для API Facebook - и это просто не у меня в голове, так что я надеюсь, что кто-то здесь сможет изложить этомне немного лучше.
Спасибо за вашу помощь, я новичок в API Facebook.
$apitoken = 'EAAF4azHPHh0BABSb7ZCPVv2U4pbBsZAfOMjA0tiTcKJoKKIsgfe0ZBZBf8ZAo5lZCHVh51WQzd1lvdOreA8Q4vU9F3ZCP9B1si1NWKZA7tiXxX1V06hNmQhT2tTZA8N27kinhiUDG0gDbYqLLZBZBRkGlAGuGdNZC3hdI6yJXLqd8QoPGWoi2LiLVmlqex2znHlbuqPzx0aq7YCVBQZDZD';
if( have_rows('social_networks') ):
while( have_rows('social_networks') ): the_row();
if( have_rows('facebook_group') ):
while( have_rows('facebook_group') ): the_row();
if(get_sub_field('facebook_username')){
require_once __DIR__ . '/vendor/autoload.php'; // change path as needed
require_once 'src/Facebook/autoload.php';
$fb = new \Facebook\Facebook([
'app_id' => '413876769201693',
'app_secret' => '1517da72a5c8ccaf5524d95a02d8481a',
'default_graph_version' => 'v3.3',
//'default_access_token' => '{access-token}', // optional
]);
try {
// Get the \Facebook\GraphNodes\GraphUser object for the current user.
// If you provided a 'default_access_token', the '{access-token}' is optional.
$username = $facebook_username;
$response = $fb->get("/$username?fields=fan_count,id,name,instagram_business_account,feed", "$apitoken");
} catch(\Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(\Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
$me = $response->getGraphUser();
//print_r($me);
////////////////////////////////////////////////////////
//////////////////// FACEBOOK///////////////////
//////////////////////////////////////////////////////
$facebook_likes = $me['fan_count'];
$facebook_posts = $me['feed'];
} endwhile; endif; endwhile; endif;
////////////////////////////////////////////////////////
//////////////////// FACEBOOK POSTS ///////////////////
//////////////////////////////////////////////////////
foreach($facebook_posts as $facebook_post){
$facebook_post_id = $facebook_post['id'];
try {
// Get the \Facebook\GraphNodes\GraphUser object for the current user.
// If you provided a 'default_access_token', the '{access-token}' is optional.
$response = $fb->get("/$facebook_post_id?fields=likes.limit(0).summary(true),comments.limit(0).summary(true),shares,reactions.limit(0).summary(true),message", "$apitoken");
} catch(\Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(\Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
$facebook_post_details = $response->getGraphUser();
$facebook_post_message = $facebook_post_details['message'];
$facebook_post_likes = $facebook_post_details['likes']['summary']['total_count'];
$facebook_post_comments = $facebook_post_details['comments'];
$facebook_post_shares = $facebook_post_details['shares'];
$post_id_fb = get_the_ID();
$args_fb = array(
'post_type' => 'campaigns',
);
$the_query_fb = new WP_Query( $args_fb );
if ( $the_query_fb->have_posts() ) : while ( $the_query_fb->have_posts() ) : $the_query_fb->the_post();
$campaign_id = get_the_ID();
$hashtag_fb = get_field('hashtag');
$post_title_fb = get_the_title(get_the_ID());
if (strpos($facebook_post_message, $hashtag_fb) !== false) {
if (get_page_by_title($facebook_post_message, OBJECT, 'campaign-posts')) {
wp_update_post(array(
'post_title'=> ' '.$facebook_post_message.' :facebook',
'post_type'=>'campaign-posts',
'post_content'=> $facebook_post_message,
'status' => 'published',
'meta_input' => array(
'likes' => $facebook_post_likes,
// 'shares' => $facebook_post_shares,
// 'reactions' => $facebook_post_reactions,
'influencer' => $post_id_fb,
'hashtag' => $hashtag_fb,
'platform'=> 'facebook',
'link' => $facebook_username,
)
));
wp_update_post(array(
'post_title'=> $post_title_fb,
'post_type'=> 'campaigns',
'post_content'=> get_the_content($campaign_id),
'status' => 'published',
'meta_input' => array(
'hashtag' => $hashtag_fb,
)
));
}else{
wp_insert_post(array(
'post_title'=> ' '.$facebook_post_message.' :facebook',
'post_type'=>'campaign-posts',
'post_content'=> $facebook_post_message,
'status' => 'published',
'meta_input' => array(
'likes' => $facebook_post_likes,
// 'shares' => $facebook_post_shares,
// 'reactions' => $facebook_post_reactions,
'influencer' => $post_id_fb,
'hashtag' => $hashtag_fb,
'platform'=> 'facebook',
'link' => $facebook_username,
)
));
wp_update_post(array(
'post_title'=> $post_title_fb,
'post_type'=> 'campaigns',
'post_content'=> get_the_content($campaign_id),
'status' => 'published',
'meta_input' => array(
'hashtag' => $hashtag_fb,
)
));
}
}
endwhile;
endif;
}