Получить маркер доступа к странице с Facebook API 5.0 PHP
Мне нужно размещать сообщения на странице Facebook. В частности, я хочу опубликовать через cron
.
вот что говорят документы API:
маркер доступа к странице - эти маркеры доступа похожи на маркеры доступа пользователя, за исключением того, что они предоставляют разрешения API, которые читают, пишут или изменяют данные, принадлежащие странице Facebook. Чтобы получить маркер доступа к странице, вам нужно начать с получения маркера доступа пользователя и запроса разрешения manage_pages. Как только вы маркер доступа пользователя затем вы получаете маркер доступа к странице через API Graph.
Как я могу получить доступ пользователя и маркер доступа к странице без обратного вызова страницы? Возможно ли это?
4 ответов
что вам нужно это расширенный маркер страницы, он действителен навсегда. Вы получаете один, как это:
- авторизоваться с помощью
manage_pages
разрешения (иpublish_pages
Если вы хотите разместить страницу позже), чтобы получить токен пользователя - расширить токен пользователя
- использовать
/me/accounts?fields=access_token
С помощью расширенного маркера пользователя, чтобы получить список всех ваших страниц с расширенными маркерами страниц-или использовать/page-id?fields=access_token
чтобы получить расширенный маркер страницы для определенной страницы
информация о все токены и как расширить токен пользователя:
PHP API V5
приведенный ниже код работал для меня после 24 часов чесания головы .... надеюсь, это поможет кстати, если вам нужен этот код для работы, вы должны были выполнить первые два шага
- должен иметь вход в facebook, который я использовал
getRedirectLoginHelper
- установите переменную сеанса с полученным маркером доступа пользователя в файле обратного вызова
$_SESSION['fb_access_token'] = (string) $accessToken;
$fbApp = new Facebook\FacebookApp( 'xxx', 'xxx', 'v2.7' );
$fb = new Facebook\Facebook( array(
'app_id' => 'xxx',
'app_secret' => 'xxx',
'default_graph_version' => 'v2.7'
) );
$requestxx = new FacebookRequest(
$fbApp,
$_SESSION['fb_access_token'],//my user access token
'GET',
'/{page-id}?fields=access_token',
array( 'ADMINISTER' )
);
$responset = $fb->getClient()->sendRequest( $requestxx );
$json = json_decode( $responset->getBody() );
$page_access = $json->access_token;
//posting to page
$requesty = new FacebookRequest(
$fbApp,
$page_access ,
'POST',
'/{page-id}/feed?message=Hello fans YYYYYYYYYYYYYYY'
);
$response = $fb->getClient()->sendRequest( $requesty );
var_dump( $response );
вы можете получить маркер страницы таким образом:
$response = $fb->get('/'.$pageId.'?fields=access_token', (string)$accessToken);
$json = json_decode($response->getBody());
$page_token = $json->access_token;
$response = $fb->post('/'.$pageId.'/feed', $fbData, $page_token);
у меня есть только код JavaScript, но как только у вас есть маркер доступа, вы можете получить страницы, которые могут быть администрированы данным пользователем. Это будет содержать маркер доступа к странице для каждого из них:
jQuery.ajax({type: "GET",
url: "https://graph.facebook.com/v2.2/me/accounts?access_token=" + userToken,
async: false,
data: jsonRequest,
dataType: "json",
cache: false,
success: function(data)
{
данные возвращаются как:
{
"data": [
{
"access_token": "CAACni8TcBB0B...cZBJfwZDZD",
"category": "Computers/Technology",
"name": "abc",
"id": "...",
"perms": [
"ADMINISTER",
"EDIT_PROFILE",
"CREATE_CONTENT",
"MODERATE_CONTENT",
"CREATE_ADS",
"BASIC_ADMIN"
]
},
{
"access_token": "CAA...ZDZD",
"category": "App Page",
"name": "xyz",
"id": "....",
"perms": [
"ADMINISTER",
"EDIT_PROFILE",
"CREATE_CONTENT",
"MODERATE_CONTENT",
"CREATE_ADS",
"BASIC_ADMIN"
]
}
],
access_token
- это маркер вашей страницы. Вы можете легко преобразовать запрос в PHP.