Я играю с авторизацией Oauth 2.0 в Facebook и задавался вопросом, истечет ли когда-нибудь срок действия токенов доступа, которые выдает Facebook. Если да, есть ли способ запросить токен доступа с длительным сроком службы?
Срок действия токенов доступа Facebook Oauth 2.0 истекает?
Ответы (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/
Попробуйте, может быть, это поможет вам
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 ..
Обратите внимание, что Facebook теперь отказывается от разрешения offline_access в пользу токенов, для которых вы можете запросить «обновление» до истечения срока действия. Я только сейчас занимаюсь этим, поэтому мне нечего больше сказать, но этот документ может помочь:
https://developers.facebook.com/docs/offline-access-deprecation/ а>
Я пришел сюда с тем же вопросом, что и OP, но ответы, предполагающие использование offline_access, вызывают у меня тревогу.
С точки зрения безопасности получение автономного доступа к учетной записи пользователя Facebook качественно отличается и намного эффективнее, чем просто использование Facebook для единого входа, и его не следует использовать легкомысленно (если вам это действительно не нужно). Когда пользователь предоставляет это разрешение, «приложение» может проверять учетную запись пользователя из любого места в любое время. Я заключил «приложение» в кавычки, потому что на самом деле это любой инструмент, у которого есть учетные данные - вы можете создать сценарий целого набора инструментов, которые не имеют ничего общего с веб-сервером, который может получить доступ к любой информации, которую пользователь согласился поделиться с ними. реквизиты для входа.
Я бы не стал использовать эту функцию для работы с коротким временем жизни токена; это не его прямая цель. Действительно, время жизни токена само по себе является функцией безопасности. Я все еще ищу подробную информацию о правильном использовании этих токенов (Могу ли я сохранить их? Как / я должен их защитить? Включает ли Facebook «токен обновления» OAuth 2.0 в основной? Если нет, то где он и / или как мне обновить?), но я уверен, что offline_access неправильный путь.
Да, срок их действия истекает. Существует значение «expires», которое передается вместе с «access_token», и, насколько я могу судить, это около 2 часов. Я искал, но не вижу способа запросить более длительный срок действия.
поскольку у меня была такая же проблема - см. отличный пост по этой теме от бена Биддингтона, который разъяснил все эти проблемы с неправильным токеном и правильным типом для отправки запросов.
http://benbiddington.wordpress.com/2010/04/23/facebook-graph-api-getting-access-tokens/
Вы всегда можете обновлять токен доступа пользователя каждый раз, когда пользователь входит на ваш сайт через facebook. Автономный доступ не может гарантировать, что вы получите пожизненный токен доступа, токен доступа изменяется всякий раз, когда пользователь отменяет вам доступ к приложению или пользователь меняет свой пароль.
Цитируется из http://developers.facebook.com/docs/authentication/ facebook
Примечание. Если приложение не запрашивало разрешение offline_access, токен доступа ограничен по времени. Ограниченный по времени токен доступа также становится недействительным, когда пользователь выходит из Facebook. Если приложение получило от пользователя разрешение offline_access, токен доступа не имеет срока действия. Однако он становится недействительным, когда пользователь меняет свой пароль.
Предположим, вы храните идентификатор пользователя facebook uid и токен доступа в таблице пользователей в своей базе данных, каждый раз, когда пользователь нажимает кнопку «Войти через facebook», вы проверяете статус входа, используя facebook Javascript API, а затем проверяете статус подключения из ответа. , если пользователь подключился к вашему сайту, вы можете обновить токен доступа в таблице.
Нажмите здесь, чтобы обменять короткоживущий токен доступа на долгоживущий / не истекающий (страницы):
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
войдите в учетную запись facebook и отредактируйте настройки своего приложения (учетная запись -> настройки приложения -> дополнительное разрешение приложения, которое использует вашу учетную запись). снимите флажок с разрешения (Доступ к моим данным, когда я не использую приложение (offline_access)). Тогда при входе в приложение face book выдаст новый токен.
Базовый токен 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}
Несколько лет спустя это справедливо, но теперь в Facebook Graph API Explorer рядом с токеном доступа есть небольшой информационный символ, который позволяет вам получить доступ к приложению инструмента токена доступа и продлить токен API на пару месяцев. Может быть полезно во время разработки.
проверьте следующее, когда вы взаимодействуете с 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 с псевдонимом «я» будет работать только с токеном с сессионной частью.
Я не знаю, когда точно истекает срок действия токенов, но они есть, иначе не было бы возможности предоставить автономные разрешения.
В любом случае, иногда требовать от пользователя предоставления офлайн-разрешений - это излишество. В зависимости от ваших потребностей может быть достаточно, чтобы токен оставался действительным, пока веб-сайт открыт в браузере пользователя. Для этого может быть более простое решение - периодически перезагружать пользователя с помощью iframe: автоматический повторный вход в facebook из файла cookie php
Работал у меня ...
