Срок действия маркеров доступа Facebook Oauth 2.0 истекает? - PullRequest
121 голосов
/ 22 апреля 2010

Я играю с авторизацией Oauth 2.0 в Facebook, и мне было интересно, не истек ли когда-нибудь токен доступа Facebook.Если да, есть ли способ запросить маркер доступа с длительным сроком действия?

Ответы [ 12 ]

62 голосов
/ 24 апреля 2010

Немного покопавшись, я нашел это. Вроде бы ответ:

Обновлено (11 апреля / 2018)

  • Срок действия токена истекает примерно через 60 дней.
  • Токен будет обновляться один раз в день, до 90 дней, когда человек, использующий ваше приложение, отправляет запрос на серверы Facebook.
  • Все токены доступа необходимо обновлять каждые 90 дней с согласия человека, использующего ваше приложение.

Объявление о смене Facebook (10/04/2018)

Facebook обновил страницу истечения срока действия токена (10/04/2018)

offline_access: Позволяет вашему приложению выполнять авторизованные запросы от имени пользователя в любое время. По умолчанию срок действия большинства маркеров доступа истекает через короткий промежуток времени, чтобы приложения выполняли запросы от имени пользователя только тогда, когда оно активно использует приложение. Это разрешение делает маркер доступа, возвращенный нашей конечной точкой OAuth, долгоживущим.

Запрошено значение разрешения.

http://developers.facebook.com/docs/authentication/permissions

UPDATE

разрешение offline_access было удалено некоторое время назад.

https://developers.facebook.com/docs/roadmap/completed-changes/offline-access-removal/

29 голосов
/ 19 августа 2010

Попробуйте, может быть, это поможет вам полностью

https://graph.facebook.com/oauth/authorize?
    client_id=127605460617602&
scope=offline_access,read_stream,user_photos,user_videos,publish_stream&
    redirect_uri=http://www.example.com/

Чтобы получить пожизненный токен доступа, вы должны использовать scope=offline_access

Значение scope=offline_access таково: -

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

Но в соответствии с будущей модернизацией Facebook функциональность offline_acees устареет навсегда с 3 октября 2012 года. и пользователю будет предоставлен токен доступа на 60 дней с длительным сроком действия, и до истечения срока действия токена доступа Facebook уведомит об этом или вы сможете получить пользовательскую функцию уведомления, извлекая значение срока действия из API Facebook.

21 голосов
/ 28 января 2012

Обратите внимание, что Facebook теперь отказывается от разрешения offline_access в пользу токенов, для которых можно запросить «обновление» до истечения срока действия. Я сам сейчас занимаюсь этим, поэтому мне нечего сказать, но этот документ может помочь:

https://developers.facebook.com/docs/offline-access-deprecation/

17 голосов
/ 17 ноября 2010

Я пришел сюда с тем же вопросом, что и ОП, но ответы, предполагающие использование offline_access, вызывают у меня красные флажки.

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

Я бы не использовал эту функцию для обхода короткого срока службы токена; это не его предназначение. Действительно, само время жизни токена - это функция безопасности. Я все еще ищу сведения о правильном использовании этих токенов (Могу ли я сохранить их? Как / нужно ли их защитить? Встраивает ли Facebook основной токен OAuth 2.0 в основной? Если нет, где он находится и / или как мне обновить?), но я почти уверен, что offline_access - неправильный путь.

8 голосов
/ 23 апреля 2010

Да, они истекают. Существует значение «expires», которое передается вместе с «access_token», и, насколько я могу судить, оно составляет около 2 часов. Я искал, но не вижу способа запросить более длительное время истечения.

6 голосов
/ 18 июня 2010

, поскольку у меня была такая же проблема - см. Отличный пост на эту тему от Бена Биддингтона, который разъяснил все эти проблемы с неправильным токеном и правильным типом для отправки для запросов.

http://benbiddington.wordpress.com/2010/04/23/facebook-graph-api-getting-access-tokens/

4 голосов
/ 26 ноября 2010

Вы всегда можете обновить маркер доступа пользователя каждый раз, когда пользователь входит на ваш сайт через Facebook.Автономный доступ не может гарантировать, что вы получите пожизненный токен доступа, токен доступа меняется всякий раз, когда пользователь аннулирует доступ к вашему приложению или пользователь меняет свой пароль.

Цитируется с Facebook http://developers.facebook.com/docs/authentication/

Примечание. Если приложение не запрашивало разрешение offline_access, токен доступа ограничен по времени.Токен ограниченного по времени доступа также становится недействительным, когда пользователь выходит из Facebook.Если приложение получило от пользователя разрешение offline_access, у маркера доступа нет срока действия.Однако он становится недействительным всякий раз, когда пользователь меняет свой пароль.

Предполагается, что вы сохраняете uid пользователя Facebook и маркер доступа в таблице пользователей в вашей базе данных каждый раз, когда пользователь нажимает кнопку «Войти с помощьюКнопка «Facebook», вы проверяете статус входа с помощью API JavaScript Javascript, а затем проверяете статус подключения по ответу. Если пользователь подключился к вашему сайту, вы можете обновить токен доступа в таблице.

3 голосов
/ 11 июня 2012

Нажмите эту кнопку, чтобы обменять токен недолговечного доступа на долгоживущий / недействующий (страницы):

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 
1 голос
/ 27 мая 2014

Срок действия базового токена Facebook истекает через час. Но вы можете использовать токен exchange, чтобы получить долгоживущий токен https://developers.facebook.com/docs/facebook-login/access-tokens

GET /oauth/access_token?  
    grant_type=fb_exchange_token&           
    client_id={app-id}&
    client_secret={app-secret}&
    fb_exchange_token={short-lived-token} 
1 голос
/ 14 мая 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...