Answers:
我在Facebook工作,就此可以给出明确的答案。
请不要在存储空间中放置访问令牌的最大大小。我们期望随着我们添加和删除数据并更改其编码方式,它们会随着时间增长和收缩。
我们确实在一个地方提供了有关255个字符的指导。我已经更新了包含该信息的博客文章,并更新了我们的新访问令牌文档,以包含有关尺寸的注释:
https://developers.facebook.com/docs/facebook-login/access-tokens/
对困惑感到抱歉。
随着Facebook最近转向加密访问令牌,访问令牌的长度最多可以为255个字符。如果将访问令牌存储在数据库中,则该列应至少能够容纳varchar(255)。以下是2011年10月4日来自Facebook开发者博客的摘录:
“启用了加密访问令牌迁移后,访问令牌的格式已更改。新的访问令牌格式完全不透明,您不应对代码中的格式有任何依赖性。varchar(255)字段足以存储新令牌。”
完整的博客文章在这里:https : //developers.facebook.com/blog/post/572
这个答案不再正确,我在FB的文档中找不到正确的值。我们已经收到了超过255个字符的访问令牌。我们正从VARCHAR转到SMALLTEXT,以尝试面向未来。
SMALLTEXT
还是MEDIUMTEXT
?我以前也将我的access_token限制为VARCHAR(255)
,今天我要解决这个问题。
从The OAuth 2.0 Authorization Protocol
(draft-ietf-oauth-v2-22)的1.4节开始
基于资源服务器安全性要求,访问令牌可以具有不同的格式,结构和使用方法(例如,密码属性)。访问令牌属性和用于访问受保护资源的方法超出了本规范的范围,并由伴随规范定义。
我在寻找“伴侣规格”,但没有找到任何相关内容,在11.2.2节中指出
o参数名称:access_token
o参数使用位置:授权响应,令牌响应
o更改控制器:IETF
o规范文档:[[本文档]]
这似乎表明access_token参数是在此规范中定义的。我猜该参数是,但是实际访问令牌尚未完全充实。
更新:该规范撰写的最新版本(draft-ietf-oauth-v2-31)包含一个附录,该附录更好地定义了对access_token参数的期望
A.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