Токен доступа к Facebook истекает даже с offline_access - PullRequest
3 голосов
/ 18 ноября 2010

Пользователи входят в Facebook на моем сайте через URL, который перенаправляет их на https://graph.facebook.com/oauth/authorize?client_id=116908145XXXXXX&display=page&scope=offline_access&redirect_uri=http://localhost:8000/account/services/?service=facebookcallback

. На странице обратного вызова я делаю запрос с кодом, который я получаю, чтобы получить токен доступа, по этому адресу

https://graph.facebook.com/oauth/access_token?code=2.3m2hLauQJpWTGFExUK6O3w__.3600.1290081600-100001796185871%7.....&format=json&redirect_uri=http%3A%2F%2Flocalhost%3A8000%2Faccount%2Fservices%2F%3Fservice%3Dfacebookcallback&client_id=116908145040447&scope=offline_access&client_secret=...

Ответ, который я получаю, таков: access_token=116908145XXXXXX|2.3m2hLauQJpWTGFExUK6O3w__.3600.1290081600-100001796185871|S3MG...&expires=3912

Как видно из токена, срок его действия истекает.

Срок действия токена истекаетчерез несколько часов после запроса.Разве я не должен получать токен доступа без даты истечения срока, если я делаю запросы с областью действия = offline_access?

Ответы [ 2 ]

2 голосов
/ 05 июня 2012

Старый пост, но информация может быть полезна для кого-то еще.

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

Если миграция отключена, токены будут «недолговечными» и будут действовать только час или два.Вы можете получить расширенный токен, который длится около 60 дней, сделав запрос на

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 голос
/ 23 ноября 2010

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

Но чтобы ответить на ваш вопрос напрямую, да, вы должны получить долгоживущий access_token, используя "scope = offline_access". Также, пожалуйста, проверьте, чтобы диалоговое окно показывало «Доступ к моим данным в любое время»

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