Как я могу заставить токен доступа к facebook истечь?
Я тестирую после истечения срока действия offline_access. Я думаю, что, поскольку все взаимодействия, которые приложение делает с Facebook, выполняются через мои серверы, и пользователь инициируется действием пользователя в нескольких конечных точках приложения (приложения для телефона, веб-сайт, настольное приложение). Я могу использовать токен доступа к приложениям для публикации на стене от имени моих пользователей, при условии, что приложение все еще разрешено, даже если токен доступа, который я запрашивал во время авторизации, истек. Кажется, что документация здесь подразумевает
Аутентификация в качестве приложения позволяет получить токен доступа, который позволяет вам запрашивать API Facebook от имени приложения, а не пользователя. [...] Точки доступа к приложениям также могут использоваться для публикации контента в Facebook от имени пользователя, предоставившего разрешение на публикацию для вашего приложения.
Точки доступа к приложениям обычно не истекают. После создания они действительны неограниченно.
Однако мне нужно проверить это. Поэтому мне нужно пропустить несколько токенов. Я попытался использовать официальных тестовых пользователей, которые вы создаете на сайте разработчика, которые могут взаимодействовать только с песочницей вашего приложения и другими пользователями, но их токены кажутся постоянно действующими в течение одного часа.
Итак, я попробовал использовать реальный пользователь facebook, который я создал для этого, и изменение пароля, который я прочитал, должен истекать через токен. Но это не так. Маркер все еще сообщает, что он действителен в отладчике, и я все еще могу использовать его для многих вещей, включая публикацию на стене. Я даже могу продолжать использовать этот токен после выхода из сайта facebook полностью.
Что дает? Как я могу получить expired access_token, чтобы проверить свой токен доступа к приложениям?
Изменить: я думаю, что это сработает. Я создал токен доступа к приложениям и использовал поток CLIENT-SIDE, чтобы получить токен доступа пользователя, который длился всего 2 часа, поэтому я мог просто ждать, пока он истечет. После истечения срока действия я использовал проводник Graph API, чтобы попытаться опубликовать обновление состояния, которое не сообщило мне, когда мой токен истек. Затем я попробовал одно и то же действие, используя мой токен приложения, который преуспел.
Ответы
Ответ 1
Это должно работать, проверьте ниже.
Недействительный (ака выйдите из системы) ваш токен; сделать HTTP GET-вызов этой конечной точке;
https://api.facebook.com/restserver.php?method=auth.expireSession&format=json&access_token=<access_token>
p.s. мой ответ с 2012 года... С тех пор Facebook API развился со многими серьезными изменениями. Более надежно читать док-код разработчика up2date Facebook
Ответ 2
Но он говорит прямо в документации, сразу после последней строки, которую вы цитировали:
Точки доступа к приложениям обычно не истекают. После создания они действительный неопределенно. Однако, если вам нужно аннулировать приложение Токен доступа по какой-либо причине, вы можете reset ваш секрет приложения в своем настройки приложения. Когда ваш App Secret будет reset, вам нужно будет выполните следующие шаги, чтобы создать новый токен доступа к приложениям.
Итак, для ваших целей тестирования reset секретный ключ приложения.
Изменить
О, я совершенно неправильно вас понял.
Легче аннулировать токен пользователя, вы просто используете соединение me/permissions с запросом DELETE.
Это приведет к удалению приложения для зарегистрированного пользователя.
Вы можете попробовать это из инструмента проводника, просто выберите DELETE в поле выбора слева от поля пути.
Ответ 3
Как и ответ @guleryuz, но по праву:
Учитывая действительный access_token ${token}
:
$ curl -X GET "https://graph.facebook.com/v2.7/me/permissions?access_token=${token}"
{"data":[{"permission":"user_friends","status":"granted"},{"permission":"email","status":"granted"},{"permission":"manage_pages","status":"granted"},{"permission":"business_management","status":"granted"},{"permission":"pages_messaging","status":"granted"},{"permission":"pages_messaging_phone_number","status":"granted"},{"permission":"public_profile","status":"granted"}]}
Отменить запрос:
$ curl -X DELETE "https://graph.facebook.com/v2.7/me/permissions?access_token=${token}"
{"success":true}
Проверить отмену:
$ curl -X GET "https://graph.facebook.com/v2.7/me/permissions?access_token=${token}"
{"error":{"message":"Error validating access token: The session was invalidated explicitly using an API call.","type":"OAuthException","code":190,"error_subcode":466,"fbtrace_id":"E2UhrNzyyzZ"}}
Ответ 4
Ответы, опубликованные здесь, устарели. Чтобы заставить токен истечь: войдите в свою учетную запись на facebook, перейдите в "Настройки", затем нажмите "Приложения" в левой части страницы
![Выбор параметров]()
Удалите приложение:
![введите описание изображения здесь]()
Это заставит токен истекать.
Ответ 5
Для разрешений просмотра
https://graph.facebook.com/v2.7/{userID}/permissions?access_token={acessToken}
Для разрешений на удаление добавьте "method=delete"
до &access_token=
https://graph.facebook.com/v2.7/{userID}/permissions?method=delete&access_token={acessToken}
Ответ 6
вы можете попробовать воспроизвести поведение, изменив свой пароль в facebook
Ответ 7
https://www.facebook.com/connect/login_success.html#access_token= "access_token" & expires_in = 1.minutes
Здесь вместо "access_token" введите маркер доступа без кавычек, и токен доступа истечет через 1 минуту.