Я работаю в Facebook и могу дать исчерпывающий ответ по этому поводу.
Пожалуйста, не устанавливайте максимальный размер хранилища для токена доступа. Мы ожидаем, что они будут как расти, так и уменьшаться со временем по мере добавления и удаления данных и изменения способа их кодирования.
Мы действительно дали руководство в одном месте о том, что это 255 символов. Я обновил сообщение в блоге, в котором была эта информация, и обновил нашу новую документацию по токенам доступа, чтобы включить примечание о размерах:
https://developers.facebook.com/docs/facebook-login/access-tokens/
Извините за путаницу.
С недавним переходом Facebook на зашифрованные токены доступа длина токена доступа может составлять до 255 символов. Если вы храните токен доступа в своей базе данных, столбец должен содержать как минимум varchar (255). Вот выдержка из блога разработчиков Facebook от 4 октября 2011 года:
"При включенной миграции зашифрованного токена доступа формат токена доступа изменился. Новый формат токена доступа полностью непрозрачен, и вы не должны зависеть от формата в вашем коде. Для этого достаточно поля varchar (255). хранить новые жетоны ".
Полная запись в блоге здесь: https://developers.facebook.com/blog/post/572
источник
Этот ответ больше неверен, и я не могу найти исправленное значение в документации FB. Мы получаем токены доступа длиной более 255 символов. Вместо этого мы переходим от VARCHAR к SMALLTEXT, чтобы попытаться обеспечить соответствие требованиям будущего.
источник
SMALLTEXT
илиMEDIUMTEXT
? Раньше у меня был доступ к access_token,VARCHAR(255)
и сегодня я столкнулся с его последствиями.Из раздела 1.4
The OAuth 2.0 Authorization Protocol
( draft-ietf-oauth-v2-22 )Я поискал «сопутствующие спецификации», но не нашел ничего подходящего, и в разделе 11.2.2 говорится
Это, кажется, указывает на то, что параметр access_token определен в этой спецификации. Как я полагаю, это параметр, но фактический токен доступа не полностью конкретизирован.
Обновление: последняя версия данной спецификации ( draft-ietf-oauth-v2-31 ) включает приложение, которое лучше определяет, чего ожидать от параметра access_token.
По сути, это означает, что access_token должен иметь длину не менее 1 символа, но нет ограничений на длину, определенную в этой спецификации.
Обратите внимание, что они определяют VSCHAR =% x20-7E
источник
Токен доступа к Facebook может быть длиннее 255 символов. У меня было много ошибок, например,
ActiveRecord::StatementInvalid: PG::StringDataRightTruncation: ERROR: value too long for type character varying(255)
где значение было токеном доступа к facebook. Не используйтеstring
столбец типа, потому что его длина ограничена. Вы можете использоватьtext
столбец типа для хранения токенов.источник
В последнее время наше приложение видит их длиной более 100 символов. Я все еще ищу документацию, чтобы определить для них «безопасный» размер поля.
источник
Я обновлю ответ по потраченному времени.
Из документации OAuth2,
(Раздел 4.2.2 этого документа )
Примечание. Facebook использует OAuth2, как указано на этой странице .
Так что теперь, похоже, на портале разработчиков Facebook нет информации о длине токена OAuth. Yahoo, похоже, использует токен длиной 400 бит, поэтому лучше предположить, что столбец TEXT в MySQL безопаснее, чем varchar.
источник