Как получить токен доступа к странице, который не истекает?
Я хотел бы знать, возможно ли иметь токен доступа, который никогда не истекает для сообщения на моей странице.
Теперь я получаю токен доступа с помощью:
https://graph.facebook.com/me/accounts
У меня есть разрешение publish_stream
и manage_pages
, но с помощью Access Token Debugger я вижу, что токен истекает примерно через 1 час. Есть ли способ никогда не истекать?
Ответы
Ответ 1
Смотрите разработчики facebook:
Используя долгоживущий токен доступа пользователя, запрос [Пользователь ID]/accounts теперь будут предоставлять токены доступа к страницам, которые не expire для страниц, которыми управляет пользователь.
Итак, вы должны обменивать свой первоначальный короткозахваченный токен на долгоживущий токен с вызовом на стороне сервера:
https://graph.facebook.com/oauth/access_token?
client_id=APP_ID& client_secret=APP_SECRET& grant_type=fb_exchange_token& fb_exchange_token=EXISTING_ACCESS_TOKEN
И затем запросите меня/учетные записи с этим longlived токеном. Определенно работает для нас, то есть отладчик показывает: "Истекает: никогда"
изменить - наш процесс
Итак, что мы делаем:
-
сначала аутентификация на стороне клиента с нашим приложением, где мы получаем "код" после того, как пользователь принимает запрашиваемые разрешения и связывает его аккаунт в нашем приложении
https://www.facebook.com/dialog/oauth? client_id = YOUR_APP_ID & redirect_uri = YOUR_REDIRECT_URI & scope = COMMA_SEPARATED_LIST_OF_PERMISSION_NAMES & response_type = code
-
Теперь в нашем серверном приложении мы используем проверку на стороне сервера для обмена кодом для токена доступа:
https://graph.facebook.com/oauth/access_token? client_id = YOUR_APP_ID & redirect_uri = YOUR_REDIRECT_URI & client_secret = YOUR_APP_SECRET & code = CODE_GENERATED_BY_FACEBOOK
-
С помощью этого access_token мы осуществляем обмен на стороне сервера, как описано выше
-
Теперь мы запрашиваем у меня/учетные записи, и полученный access_token всегда действителен.
Надеюсь, что поможет
Ответ 2
Я немного упростил Пит и добавил шаг, чтобы получить токен доступа без истечения срока действия:
Ответ 3
Существует более простой способ сделать это с 2016 года:)
-
Перейдите к https://developers.facebook.com/tools/explorer
-
Выберите приложение из раскрывающегося списка в верхней правой руке
сторона
-
Нажмите кнопку "Получить маркер доступа" чуть ниже раскрывающегося списка приложений
с правой стороны
-
В раскрывающемся списке выберите страницу, на которой вы хотите получить токен доступа для.
Если вы не видите свои страницы, то вам нужно убедиться
youre установлен с ролью администратора для страницы. Также вам, возможно, придется
нажмите "Получить токен доступа к странице" в раскрывающемся списке, после чего затем
страницы будут отображаться в раскрывающемся списке в следующий раз, когда вы нажмете "Получить доступ"
Token ".
-
Щелкните значок синего восклицательного знака в поле ввода "Доступ к токенам"
-
Нажмите кнопку "Открыть в значке доступа" на
внизу справа от всплывающего окна
-
Нажмите кнопку "Расширить токен доступа" , чтобы получить токен, который никогда
истекает
Исходная информация из этой статьи: https://www.rocketmarketinginc.com/blog/get-never-expiring-facebook-page-access-token/
Ответ 4
Хорошо, поэтому потребовалось около недели исследований, но вот мое решение.
в https://developers.facebook.com/tools/explorer/ убедитесь, что у вас есть manage_page как часть вашего access_token. после этого используйте этот код с идентификатором вашего приложения, секретным и перенаправляемым:
<?php
app_id = "APP_ID";
$app_secret = "APP_SECERET";
$post_login_url = "REDIRECT_URL";
$code = $_REQUEST['code'];
//Obtain the access_token with publish_stream permission
if(empty($code)){
$dialog_url= "http://www.facebook.com/dialog/oauth?"
. "client_id=" . $app_id
. "&redirect_uri=" . urlencode( $post_login_url)
. "&COMMA_SEPARATED_LIST_OF_PERMISSION_NAMES";
echo("<script>top.location.href='" . $dialog_url
. "'</script>");
}
else {
$token_url="https://graph.facebook.com/oauth/access_token?"
. "client_id=" . $app_id
. "&redirect_uri=". urlencode($post_login_url)
. "&client_secret=" . $app_secret
. "&code=" . $code;
$response = file_get_contents($token_url);
$params = null;
parse_str($response, $params);
$access_token = $params['access_token'];
echo 'access token: ' . $access_token.'<br>';
if($access_token){
$token_url="https://graph.facebook.com/oauth/access_token?"
. "client_id=" . $app_id
. "&redirect_uri=". urlencode($post_login_url)
. "&client_secret=" . $app_secret
.'&grant_type=fb_exchange_token'
. "&fb_exchange_token=" . $access_token;
$response = file_get_contents($token_url);
$access_token = $params['access_token'];
echo 'new access token: '.$access_token;
}
}*/
?>
После этого скопируйте "новый токен доступа" и вернитесь к https://developers.facebook.com/tools/explorer/. Когда вы доберетесь до своего нового токена доступа в поле токена доступа.
Затем нажмите "Отправить". После этого в node вы увидите клик + ____ и прокрутите вниз до учетных записей и нажмите на него. найдите страницу, на которой нужен токен доступа, и скопируйте ее и вставьте в поле ключа доступа. нажмите кнопку "Отладка", и вы увидите, что она никогда не истечет. сохраните этот токен, он останется действительным, если вы не reset секрет ваших приложений.
Ответ 5
Вы можете использовать следующий api из facebook, чтобы обновить токен до 60 дней, и как только истечет срок действия токена, вызовите тот же api снова за 60 дней, чтобы обновить его жизнь до 60 дней с этого момента
Срок действия токена присутствует в параметре expires и его значение находится в секундах
Замените CLIENT_ID и CLIENT_SECRET своим фактическим значением
https://graph.facebook.com/oauth/access_token?client_id= & client_secret = & grant_type = fb_exchange_token & fb_exchange_token =
в ACCESS_TOKEN, поместите фактическое значение токена, не добавляя "access_token ="