Хранение токена доступа пользователя к Facebook

У меня есть база данных, в которой хранится токен доступа пользователя (вместе с некоторыми другими данными). Мой список разрешений включает offline_access при авторизации пользователя.

Будет ли токен доступа пользователя (на стороне клиента) всегда совпадать с токеном доступа этого пользователя в базе данных? Или может ли токен доступа пользователя измениться, когда он выйдет из системы, изменит свой пароль и т. д.?


person Collin O'Connor    schedule 01.06.2011    source источник
comment
могу я узнать, как вы получили токен доступа пользователя?   -  person Jam Ville    schedule 29.08.2012


Ответы (3)


Нет, токен доступа не всегда будет одним и тем же, даже с offline_access. Вам потребуется получить новый токен доступа, когда 1) пользователь изменит свой пароль или 2) деактивирует ваше приложение. В противном случае он должен оставаться прежним.

Однако идентификатор Facebook пользователя никогда не изменится. Его можно проанализировать из токена доступа или получить, вызвав API-интерфейс /me graph.

У Facebook есть сообщение в блоге в котором подробно рассказывается об этом.

Обновление: Facebook добавил сообщение в блоге специально для обработки отозванной авторизации.

person bkaid    schedule 01.06.2011
comment
В моей базе данных я храню высокий балл, связанный с токеном доступа. Поскольку этот токен доступа может истечь и не совпадать с токеном доступа к базам данных, рекорд пользователя будет стерт. Есть ли у вас идеи, как противостоять этой проблеме? - person Collin O'Connor; 02.06.2011
comment
Легко — просто сохраните его с идентификатором пользователя facebook — это никогда не изменится. - person bkaid; 02.06.2011
comment
Я совершенно забыл, что у пользователей есть идентификатор пользователя. Так есть ли смысл хранить токен доступа пользователя в базе данных? - person Collin O'Connor; 02.06.2011
comment
Вам нужно будет сохранить этот токен, если вы хотите звонить в Facebook. Но вы не должны запрашивать разрешения, такие как offline_access, если они вам на самом деле не нужны, потому что это увеличивает вероятность того, что пользователь отклонит ваше приложение. - person bkaid; 02.06.2011
comment
Если и только если у вас есть разрешение offline_access. Потому что, когда пользователь пользователя выйдет из системы, у вас не будет никаких способов вернуть действительный токен. Но теперь возникает вопрос: действительно ли вам нужно разрешение offline_access, поскольку вы храните идентификаторы пользователей для высоких результатов? - person Quentin; 02.06.2011
comment
Итак, если бы я не хранил токен пользователя в базе данных, это означало бы, что мне пришлось бы авторизовать пользователя каждый раз, когда он запускает мое приложение (кстати, я использую Android). - person Collin O'Connor; 02.06.2011
comment
Токен доступа пользователей меняется каждый раз, когда они входят в систему с другого устройства, я прав? - person NodeDad; 22.08.2013


Не всегда.

Срок действия токенов доступа обычно истекает через определенный момент времени. Однако есть способ сделать токен доступа с бесконечным сроком действия, но вам нужно запросить offline_access в качестве одного из разрешений.

Подробнее см. здесь.

Изменить Только что увидел, что вам требуется offline_access в качестве разрешения. Тогда нет, они не истекут

person Stanley Cup Phil    schedule 01.06.2011