Изящное расширение маркеров доступа на стороне Facebook

У меня есть приложение, которое использовало offline_access, которое, очевидно, нуждается в изменении, так как оно исчезает.

Мы используем это разрешение для публикации сообщений на стене Facebook пользователя, когда они взаимодействуют без нашего бэкэнда через любое количество API. У нас есть веб-сайт, несколько мобильных приложений для телефонов iPhone, Android, Blackberry и Nokia, которые подключаются к приложению, а также настольное приложение, которое взаимодействует с аппаратными устройствами, и все это может привести к тому, что серверная часть попытается опубликовать в Facebook, но только веб-сайт позволяет пользователю сделать первоначальную авторизацию через Facebook.

Из того, что я понимаю, использование аутентификации на стороне сервера получает токены на 60 дней, и единственный способ получить новые токены - это повторить процесс аутентификации, который предполагает, что пользователь не изменил пароль, вошел в Facebook и не -авторизованное приложение будет отображаться как не что иное, как серия автоматических перенаправлений.

Есть ли другой способ сделать это? Например, что именно делает fb_exchange_token? Применимо ли это в этом случае или ТОЛЬКО это применимо к токенам, полученным через API javascript?

Есть ли что-то, что мы можем сделать для этих пользовательских интерфейсов, не относящихся к веб-сайту, кроме того, чтобы включать нативные API-интерфейсы facebook и делать то же самое для веб-сайта?


Попытка использовать fb_extend_token была довольно бесплодной. Повторный запуск стандартной аутентификации вернул тот же токен, но с новым 60-дневным сроком действия. Повторное выполнение этого через некоторое время не расширило токен. Я надеюсь, что это означает, что я могу делать это только один раз в день, а не один раз за токен.

2 ответа

Решение

Поскольку я использовал поток на стороне сервера, а пользователь никогда не видел ключи, я смог немного переработать свое приложение, чтобы использовать токен APPLICATION. Эти ключи принадлежат вашему приложению и позволяют вам использовать API от имени пользователя до тех пор, пока они не отозвали свое разрешение. Срок действия токенов авторизации пользователя может истечь, но пока пользователь явно не удалил ваше приложение из приложений, которые он разрешил, ваш токен будет по-прежнему позволять вам публиковать сообщения на стене с помощью /user/ URL, /me/ URL не будут работать, потому что ваш токен привязан к вашему приложению.

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

Любой, кто имел автономный доступ до устаревания, все равно сможет нормально использовать ваше приложение, по крайней мере, в течение 60 дней. По окончании этого периода вам придется повторно авторизовать пользователей и продлить их токены доступа еще на 60 дней. Для этого вы должны войти в систему и авторизовать ваше приложение (при необходимости). Затем вы расширяете их токен доступа с помощью fb_exchange_token, так что это хорошо в течение 60 дней.

Я уверен, что вы видели это, но все это изложено в этой статье, более конкретно в разделе о ранее использовавшемся offline_access. Я также нашел этот пост полезным для обновления. Вот еще одна ссылка, которая более подробно описывает, как обращаться с недействительными токенами.

Другие вопросы по тегам