Я играю с авторизацией Oauth 2.0 в Facebook и задавался вопросом, истечет ли когда-нибудь срок действия токенов доступа, которые Facebook теряет. Если да, есть ли способ запросить токен доступа с длительным сроком службы?
Я играю с авторизацией Oauth 2.0 в Facebook и задавался вопросом, истечет ли когда-нибудь срок действия токенов доступа, которые Facebook теряет. Если да, есть ли способ запросить токен доступа с длительным сроком службы?
Ответы:
Немного покопавшись, я нашел это. Вроде бы ответ:
Обновлено (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/
Попробуйте, может быть, это поможет вам
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. Автономный доступ не может гарантировать вам получение пожизненного токена доступа, токен доступа меняется всякий раз, когда пользователь отменяет вам доступ к приложению или пользователь меняет свой пароль.
Цитируется из facebook http://developers.facebook.com/docs/authentication/
Примечание. Если приложение не запрашивало разрешение offline_access, токен доступа ограничен по времени. Маркер доступа с ограниченным временем доступа также становится недействительным, когда пользователь выходит из Facebook. Если приложение получило от пользователя разрешение offline_access, токен доступа не имеет срока действия. Однако он становится недействительным, когда пользователь меняет свой пароль.
Предположим, вы храните идентификатор пользователя facebook uid и токен доступа в таблице пользователей в своей базе данных, каждый раз, когда пользователь нажимает кнопку «Войти через facebook», вы проверяете статус входа, используя facebook Javascript API, а затем проверяете статус подключения из ответа. , если пользователь подключился к вашему сайту, вы можете обновить токен доступа в таблице.
войдите в учетную запись 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}
проверьте следующее, когда вы взаимодействуете с 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
Работал у меня ...
Несколько лет спустя это справедливо, но теперь в Facebook Graph API Explorer рядом с токеном доступа есть небольшой информационный символ, который позволяет вам получить доступ к приложению инструмента токена доступа и продлить токен API на пару месяцев. Может быть полезно во время разработки.