Срок действия токенов доступа Facebook Oauth 2.0 истекает?

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


person Jared Brown    schedule 22.04.2010    source источник
comment
Чтобы добавить некоторые детали к этому вопросу: даже offline_access становится недействительным, когда пользователь меняет свой пароль Facebook. Так что лучше перестраховаться и повторно получить новый токен доступа, если вы получаете ошибки при использовании старого.   -  person Hoàng Long    schedule 10.08.2011
comment
Чтобы добавить ссылку: developers.facebook.com/blog/post/500   -  person Hoàng Long    schedule 23.09.2011
comment
Эй, ребята, вы все просто зажигаете. Каким бы ни был вопрос, я просто решаю его ... Спасибо всем   -  person vinay    schedule 16.12.2011
comment
Похоже, что 1 мая Facebook прекращает поддержку разрешения offline_access. В будущем срок действия всех токенов доступа истечет, когда истечет срок действия (60 дней), пользователь изменит свой пароль, пользователь деавторизует ваше приложение или выйдет из системы. API. P.S. Я не уверен, почему Facebook устанавливает новое время истечения срока действия на 60 дней, если токены доступа все еще истекают при выходе из системы (похоже, что пользователи обычно выходят из системы в течение 60 дней). Может быть, я что-то упускаю ... срок действия   -  person Steven Wexler    schedule 27.02.2012
comment
Поведение access_token сейчас меняется, вам следует найти Критические изменения за июль 2012 г. - разрешение offline_access устарело, а access_token будет иметь длительный жизненный цикл.   -  person qodeninja    schedule 28.06.2012


Ответы (13)


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

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

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

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

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

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

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

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

ОБНОВЛЕНИЕ

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

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

person Tendrid    schedule 24.04.2010
comment
В ответ на это я создал библиотеку с открытым исходным кодом, которая может быть вам полезна, ребята. Это библиотека oAuth, которая предназначена для поддержки всех социальных сетей с реализациями oAuth. Он уже поддерживает расширенные разрешения, включая отправку сообщений в автономном режиме. code.google.com/p/socialoauth - person Tendrid; 19.05.2010
comment
Даже токены offline_access истекают, если пользователь меняет свой пароль на Facebook. - person Bemmu; 05.02.2012
comment
К сожалению, это не чистое решение проблемы. Сначала или все запросы на это разрешение предупреждают пользователя о дополнительном разрешении (например, это приложение сможет получить доступ к вашей учетной записи facebook в ЛЮБОЕ время), что отключает МНОГО потенциальных клиентов. Во-вторых, если пользователь изменит свой пароль, этот токен станет недействительным. Поэтому должен быть лучший способ (например, обновить токен) для получения нового access_token, особенно для веб-приложений, управляемых ajax с богатым клиентом. - person Vladimir; 19.02.2012
comment
Согласно их документация по API, offline_access больше не будет поддерживаться со 2 мая 2012 года. - person Ben Lesh; 15.04.2012
comment
@Tendrid Ваша библиотека поддерживает только Facebook и Twitter. - person mareoraft; 30.10.2015

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

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 ..

person PrateekSaluja    schedule 19.08.2010
comment
Я хотел бы сообщить вам, что fb изменился в его api, и теперь нет доступного токена времени жизни, теперь автономный доступ будет активен в течение 60 дней. - person PrateekSaluja; 28.03.2012

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

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

person Tripp Lilley    schedule 28.01.2012

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

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

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

person David Pope    schedule 16.11.2010
comment
такие же сомнения здесь, Дэвид. Вы нашли дополнительную информацию о том, как защитить токены, хранящиеся для автономного доступа? - person neal aise; 04.12.2010
comment
Документы Facebook ужасны, но я думаю, что ситуация такова, что сохранять токены доступа, НЕ полученные с помощью offline_access, достаточно безопасно. Хотя верно, что любой, кто получает к нему доступ (пока пользователь FB все еще вошел в систему), может делать все, на что пользователь предоставил вам разрешение, это не так уж плохо, поскольку токены становятся недействительными, как только пользователь выходит из Facebook. в любом месте. Это все еще дыра в безопасности (мне кажется странным, что вам не нужно указывать секрет своего приложения в запросах / me), но она не является открытой. Если кто-то это понимает, лучше не стесняйтесь поправлять меня. - person David Pope; 06.12.2010

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

person TerryMatula    schedule 23.04.2010
comment
Если вы запросите разрешение offline_access, срок действия токена не истечет. - person Brendan Berg; 31.08.2010
comment
@Brendan: Но он станет недействительным, как только пользователь изменит свой пароль на Facebook. - person Hoàng Long; 10.08.2011
comment
@ HoàngLong есть упоминание об этом? - person Charles Prakash Dasari; 22.09.2011

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

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

person z3cko    schedule 18.06.2010

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

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

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

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

person imikay    schedule 26.11.2010

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

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 
person MPaulo    schedule 11.06.2012

войдите в учетную запись facebook и отредактируйте настройки своего приложения (учетная запись -> настройки приложения -> дополнительное разрешение приложения, которое использует вашу учетную запись). снимите флажок с разрешения (Доступ к моим данным, когда я не использую приложение (offline_access)). Тогда при входе в приложение face book выдаст новый токен.

person Sreekanth P    schedule 14.05.2010

Базовый токен facebook истекает примерно через час. Но вы можете использовать токен обмена, чтобы получить токен с долгим сроком службы 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} 
person Mr Tung    schedule 27.05.2014

Несколько лет спустя это справедливо, но теперь в Facebook Graph API Explorer рядом с токеном доступа есть небольшой информационный символ, который позволяет вам получить доступ к приложению инструмента токена доступа и продлить токен API на пару месяцев. Может быть полезно во время разработки.

введите описание изображения здесь

person martinedwards    schedule 27.01.2020

проверьте следующее, когда вы взаимодействуете с API графика facebook.

1) URL подключения приложения должен быть основой вашего URL подключения "redirect_uri": - www.x-minds.org/fb/connect/ redirect_uri - www.x-minds.org/fb/connect/redirect 2) Ваш "redirect_uri" "должно быть одинаковым в обоих случаях (когда вы запрашиваете код подтверждения и запрашиваете access_token) redirect_uri - www.x-minds.org/fb/connect/redirect 3) вы должны кодировать аргумент, когда вы запрашиваете access_token 4) не должен передавать аргумент (type = client_cred), когда вы запрашиваете access_token. сервер авторизации выдаст токен без сеансовой части. мы не можем использовать этот токен с псевдонимом «я» в графическом API. Этот токен будет иметь длину (40), но токен с сеансовой частью будет иметь длину (81). Токен доступа без части сеанса будет работать в некоторых случаях

например: - https://graph.facebook.com/? access_token = 116122545078207 | EyWJJYqrdgQgV1bfueck320z7MM. Но Graph API с псевдонимом «я» будет работать только с токеном с сессионной частью.

person Sreekanth P    schedule 12.05.2010

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

В любом случае, иногда требовать от пользователя предоставления офлайн-разрешений - это излишество. В зависимости от ваших потребностей может быть достаточно, чтобы токен оставался действительным, пока веб-сайт открыт в браузере пользователя. Для этого может быть более простое решение - периодически перезагружать пользователя с помощью iframe: автоматический повторный вход в facebook из файла cookie php

Работал у меня ...

person Uri    schedule 26.09.2011