2010-12-10 3 views
89

Я искал в Google и StackOverflow, чтобы найти ответ на свой вопрос, но я не могу его найти.Какова длина access_token в Facebook OAuth2?

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

Я даже не могу найти, просто ли это число или смесь между числом и строками.

ответ

115

Я работаю в Facebook, и я могу дать окончательный ответ об этом.

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

Мы дали указание в одном месте около 255 символов. Я обновил запись в блоге, имел эту информацию и обновлять наши новые документы маркера доступа включить примечание о размерах:

https://developers.facebook.com/docs/facebook-login/access-tokens/

Извините за путаницу.

2

В последнее время в нашем приложении отображается более 100 символов. Я все еще ищу документацию, поэтому могу определить размер «безопасного» поля для них.

+5

Что это за «документация», о которой вы говорите? : D – Mark 2011-02-10 17:31:21

8

Из разделе 1.4 The OAuth 2.0 Authorization Protocol (draft-ietf-oauth-v2-22)

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

Я посмотрел на «спецификации компаньонов», но не нашли ничего, актуальны и в разделе 11.2.2 говорится имя

о Parameter: access_token
о Параметр место использования: ответ авторизации, маркер ответа
O Изменить контроллер: IETF
о спецификации документ (ы): [[этот документ]]

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

Update: Последняя версия этого письма спецификации (draft-ietf-oauth-v2-31) включает приложение, которое определяет лучше, чего ожидать от параметра access_token

П.12. «Access_token» Синтаксис

The "access_token" element is defined in Section 4.2.2 and 
Section 5.1: 

    access-token = 1*VSCHAR 

Итак, по существу это означает, что access_token должен быть длиной не менее 1 символ, но нет никаких ограничений на сколько определено в данном описании.

Примечание они определяют VSCHAR =% x20-7E

67

С недавнего движения Facebook к зашифрованным токенов доступа, длина маркера доступа может быть до 255 символов. Если вы храните токен доступа в своей базе данных, столбец должен иметь возможность размещения как минимум varchar (255). Вот отрывок из блога разработчика Facebook от 4 октября 2011 года:

«При включенной миграции маркера шифрованного доступа формат токена доступа изменился. Новый формат токена доступа полностью непрозрачен, и вы не должны принимать никаких зависит от формата вашего кода.VARCHAR (255) поле будет достаточно, чтобы сохранить новые жетоны «

Полный блог здесь:. https://developers.facebook.com/blog/post/572

+2

+1 для обновленной информации. На самом деле это должен быть принятый ответ. – 2011-11-14 17:03:33

+12

похожее нарушение. Недавно я получил маркер доступа длиной 256 символов. – 2012-12-27 11:07:52

+2

То же, что и @o_o выше. Мы все чаще получаем более 240 символов с длинными символами, включая несколько 255+ в настоящее время. – 2013-02-27 15:25:21

25

Этот ответ уже не правильно, и я не могу найти скорректированное значение в Документы FB. Мы получили токены доступа, длина которых превышает 255 символов. Мы переходим от VARCHAR к SMALLTEXT вместо этого, чтобы попытаться найти доказательства в будущем.

2

Я обновлю ответ от времени.

Из документации OAuth2,

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

(раздел 4.2.2 this document)

Примечание: Facebook использует oauth2, как и упоминалось на this page.

Так что теперь информация о портах разработчиков не указана в отношении длины токена OAuth. Yahoo, похоже, использует токен длиной в 400 бит, поэтому лучше предположить, что столбец TEXT в MySQL безопаснее, чем varchar.

4

Токен доступа к Facebook может быть длиннее 255 символов. У меня было много ошибок, таких как ActiveRecord::StatementInvalid: PG::StringDataRightTruncation: ERROR: value too long for type character varying(255), где значение было токеном доступа к facebook. Не используйте столбец string, так как его длина ограничена. Вы можете использовать столбец типа text для хранения токенов.

Смежные вопросы