2012-05-21 6 views
3

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

Мы используем это разрешение для публикации сообщений на стене 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-адреса не будут работать, потому что ваш токен связан с вашим приложением.

+0

Это все еще актуально с учетом истечения 60 дней? Я пытаюсь решить проблему, которая просто происходит, потому что я пытаюсь отправить сообщение «/ me» вместо пользователя? –

+0

Не знаете, что вы спрашиваете? Использование токена приложения на самом деле способ обойти время истечения срока годности для токенов, которые вы получаете, когда вы набираете пользователя через процесс аутентификации на стороне сервера. Если вы используете эти токены и публикуете в/me для публикации на стене пользователя, этот токен истекает через 60 дней, и вам нужно будет снова пройти через процесс, чтобы расширить токен. Если вы используете свой токен приложения и публикуете в/user/URL, этот токен не истекает. Вы можете продолжать использовать его, пока пользователь не отозвал разрешение. Главное предостережение - вам нужно сохранить этот токен в секрете. – Sloloem

1

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

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

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

+0

Токены, которые я получаю через регулярный поток бэкэнда прямо сейчас, хороши в течение 60 дней, попытка запросить fb_exchange_token вообще не изменяет их, поэтому я могу просто увидеть время истечения срока действия на токене, отсчитывающем вниз. У меня есть миграция включена в моем тестовом приложении, так что могу ли я доверять этому поведению, когда они полностью вытащит разрешение? Я не могу найти хорошую документацию для того, что fb_exchange_token, поэтому я понял, что, возможно, он использовался потоком на стороне клиента, чтобы обменять краткосрочный токен, который вы получите таким образом для более длительного проживания, например, если вы прошел проверку подлинности с помощью серверного потока. – Sloloem

+0

Расширение жетонов, которые у вас сейчас нет, ничего не делает, потому что они уже установлены на 60 дней. Я предполагаю, что теперь вы получили токены, полученные через разрешение offline_access. FB обрезает эти времена от навсегда до 60 дней, чтобы подготовиться к устареванию offline_access. Только когда вы получите новый краткосрочный токен, вы можете продлить его до 60 дней. Из документов: «Если вы хотите, чтобы обновить все еще действующий долгоживущий access_token, вам придется получить новый кратковременный пользователь access_token первый» –

+0

@ spoonybard896 - Скажем, у меня есть маркер доступа на 60 день , Мы на 59-й день - завтра токен будет истек. Я отправляю автоматическое электронное письмо пользователю для входа снова. Будет ли это продлевать срок службы токена доступа? Поскольку я пытаюсь это сейчас, это не так, он просто возвращает тот же токен доступа. Итак, по-другому, можно ли получить совершенно новый токен доступа? (Новый непродолжительный, который я затем конвертирую в 60-дневный)? FB.Login всегда возвращает существующий токен доступа без истечения срока действия. Спасибо. – Wesley