Срок действия маркера доступа приложения Facebook (НЕ пользователя)

Срок действия токена доступа к приложению Facebook истекает? Эти токены отличаются от токенов USER; они приобретаются так:

https://graph.facebook.com/oauth/access_token?grant_type=client_credentials&client_id={0}&client_secret={1})

как описано в разделе «Вход в приложение» документа по адресу http://developers.facebook.com/docs/authentication/. .

Существуют ли какие-либо обстоятельства, при которых они становятся недействительными?

NB: это НЕ вопрос о токенах доступа ПОЛЬЗОВАТЕЛЯ (которые четко задокументированы). Был такой же вопрос http://facebook.stackoverflow.com/questions/7322063/does-app-login-access-token-expire ошибочно закрыт как дубликат другого вопроса о токенах доступа USER.


person eugen    schedule 25.01.2012    source источник


Ответы (4)


Согласно документации Facebook:

Токен доступа к приложению подписывается с использованием секрета вашего приложения и не имеет срока действия. он будет аннулирован, если вы повторно введете/сбросите свой секрет приложения.

person David Knell    schedule 09.06.2012

Создать APP_ACCESS_TOKEN очень просто. Вы можете использовать свои App ID/API Key и App secret

access_token = YOUR_APP_ID|YOUR_APP_SECRET

Пример: 1234587968 | bghyuifjk3438483249235903502035023504305

person tildy    schedule 22.05.2012
comment
Спасибо, я это знаю. Вопрос заключался в том, истекает ли срок действия этих токенов (и последующий комментарий, который я сделал, что, похоже, он не возвращает код ошибки, когда они возвращаются). - person eugen; 24.05.2012
comment
Это неправда, последняя часть не является секретом приложения. Возможно, вы захотите перепроверить это. - person Rana Deep; 21.09.2013
comment
Пожалуйста, проверьте дату моего комментария, пожалуйста. - person tildy; 01.11.2013

Я знаю, что одно из условий, при котором они станут недействительными, — это сброс секрета приложения с помощью инструмента разработчика Facebook.

Я не знаю, приведет ли использование метода OAuth для создания токена приложения к истечению срока его действия. Однако, если вы просканируете PHP SDK Facebook, вы можете заметить, что токен приложения с неограниченным сроком действия создается путем конкатенации app_id и secret:

  /**
   * Returns the access token that should be used for logged out
   * users when no authorization code is available.
   *
   * @return string The application access token, useful for gathering
   *                public information about users and applications.
   */
  protected function getApplicationAccessToken() {
    return $this->appId.'|'.$this->apiSecret;
  }

ВНИМАНИЕ: я бы никогда не использовал это в клиентском коде, так как это приведет к публикации секрета вашего приложения. Тем не менее, в среде доверенных серверов, похоже, это правильный путь.

Чтобы проверить это, я зашел в инструмент OpenGraph, стер свой токен доступа и ввел объединенное значение из примера кода. Затем я получил доступ к данным своего приложения, чтобы убедиться, что оно будет работать:

<APP_ID>/insights/application_active_users
person thesmart    schedule 25.01.2012
comment
Спасибо, это работает. Но этот метод получения токена доступа к приложению является защищенным методом, не являющимся частью общедоступного API. Я не могу поверить, что он не изменится и использовать его на живом сайте с миллионами пользователей. (Facebook печально известен критическими изменениями в общедоступном API, не говоря уже о чем-то подобном). Похоже, что токен доступа к приложению, полученный по URL-адресу (упомянутому в вопросе), действительно истекает; Ночью я начал видеть исключения в журналах своей тестовой среды: Ошибка проверки токена доступа: срок действия сеанса истек во время unix 1327539600. Текущее время unix — 1327605009. - person eugen; 27.01.2012
comment
Маловероятно, что Facebook внезапно внесет критические изменения в санкционированный SDK. Обычно Facebook предоставляет дорожную карту для критических изменений в своих санкционированных библиотеках. Часто проверяйте developers.facebook.com/roadmap. - person thesmart; 07.02.2012
comment
Увы, судя по предыдущему личному опыту, вполне вероятно, что в Facebook API произойдут критические изменения. Я только что упомянул об одном выше: срок действия токена доступа к приложению ДЕЙСТВИТЕЛЬНО истекает, хотя в документации это не указано. Хуже того, возвращаемый код ошибки равен 0 (что означает успех!?). Коды ошибок следует рассматривать как часть API, иначе разработчики останутся без гарантий. Кстати, есть ли место с окончательным неизменяемым списком кодов ошибок Facebook? - person eugen; 16.02.2012
comment
Как уже упоминалось, метод, на который вы ссылаетесь в PHP SDK, даже не является общедоступным, это защищенный метод. - person eugen; 16.02.2012

Для меня ответ заключается не в том, чтобы найти токен, срок действия которого не истекает (поскольку я не доверяю Facebook), а в том, чтобы поймать токен с истекающим сроком действия и сбросить его, не занимая время моих пользователей. Я нашел это и подумал, что вы, возможно, захотите проверить это.

«Чтобы обеспечить наилучший опыт для ваших пользователей, ваше приложение должно быть готово перехватывать ошибки для описанных выше сценариев. Следующий код PHP показывает, как обрабатывать эти ошибки и получать новый токен доступа.

Когда вы перенаправляете пользователя в диалоговое окно аутентификации, у пользователя не запрашиваются разрешения, если он уже авторизовал ваше приложение. Facebook вернет вам действительный токен доступа без какого-либо диалога с пользователем. Однако, если пользователь деавторизовал ваше приложение, ему потребуется повторно авторизовать ваше приложение, чтобы вы получили access_token». Ресурс: https://developers.facebook.com/blog/post/13/05/2011/какобрабатыватьтокеныдоступасистекшимсрокомдействия/

person Taking Time    schedule 24.02.2013