Я играю вокруг с авторизацией Oauth 2.0 в Facebook и задавался вопросом, истекают ли маркеры доступа, которые Facebook раздает когда-либо. Если так, есть ли способ запросить длительный маркер доступа?
Да, срок их действия истекает. Существует значение expires, которое передается вместе с access_token, и, насколько я могу судить, это около 2 часов. Я искал, но не вижу способа запросить более длительный срок действия.
Немного покопавшись, я нашел это. Кажется, это ответ:
Обновлено (11 апреля 2018 г.)
Объявление об изменении 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/
проверьте следующее при взаимодействии с api графика facebook.
1) URL подключения приложения должен быть основой вашего "redirect_uri" URL подключения: - www.x-minds.org/fb/connect/ redirect_uri - www.x-minds .org / fb / connect / redirect 2) Ваш "redirect_uri" должен быть одинаковым в обоих случаях (когда вы запрашиваете код подтверждения и запрашиваете токен доступа) 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 с псевдонимом "я" будет работать только с токеном с сеансовой частью.
войдите в учетную запись facebook и отредактируйте настройки своего приложения (учетная запись -> настройки приложения -> дополнительные разрешения приложения, которое использует вашу учетную запись). снимите флажок с разрешения (Доступ к моим данным, когда я не использую приложение (offline_access)). Тогда при входе в приложение face book выдаст новый токен.
поскольку у меня была та же проблема - см. отличное сообщение на эту тему от Бена Биддингтона, который прояснил все эти проблемы с неправильным токеном и правильным типом для отправки запросов.
http://benbiddington.wordpress.com/2010/04/23/facebook-graph-api-getting-access-tokens/
Попробуйте это, возможно, это поможет вам полностью
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 уведомит вас, или вы можете получить свою настраиваемую функцию уведомления, извлекая значение срока действия из Facebook Api.