Facebook OAuth2中access_token的长度是多少?

Cyr*_* N. 97 facebook oauth

我在Google和StackOverflow上搜索了我的问题的答案,但我找不到答案.

我想将access_token存储到我的数据库以进行脱机访问,我想确保指定列的正确长度.

我甚至无法找到数字和字符串之间的数字或混合.

Chr*_*ard 127

我在Facebook工作,我可以给出一个明确的答案.

请勿在存储上为访问令牌设置最大大小.随着我们添加和删除数据并更改它们的编码方式,我们预计它们会随着时间的推移而增长和缩小.

我们确实在一个地方提供了关于255个字符的指导.我已更新了包含该信息的博客文章,并更新了我们的新访问令牌文档,其中包含有关尺寸的说明:

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

对困惑感到抱歉.

  • Facebook的最终答案是我们将在以后改变它是合适的. (83认同)
  • 至少这种方式我可以期待变化,所以我不会毫无准备. (6认同)
  • MySQL需要一个上限.请给出一个真实的上限.例如1000个字符,10,000个字符,1,000,000,000个字符?没有上限是不合理的. (6认同)
  • 刚刚获得 265 个字符的令牌 (2认同)

Joh*_*ika 70

随着Facebook最近转向加密访问令牌,访问令牌的长度最多可达255个字符.如果要将访问令牌存储在数据库中,则该列应该至少可以容纳varchar(255).以下是2011年10月4日Facebook开发者博客的摘录:

"启用加密访问令牌迁移后,访问令牌的格式发生了变化.新的访问令牌格式完全不透明,您不应该对代码中的格式有任何依赖.一个varchar(255)字段就足够了存储新的令牌."

完整博客文章:https://developers.facebook.com/blog/post/572

  • 似乎不再有效.我最近收到了256个字符长度的访问令牌. (12认同)
  • +1更新信息.这应该是现在接受的答案. (2认同)
  • 与上面的@o_o相同.我们越来越多地获得240多个字符的长令牌,包括现在的255个字符. (2认同)

小智 28

这个答案不再正确,我在FB的文档中找不到更正的值.我们一直在接收超过255个字符的访问令牌.我们正在从VARCHAR转向SMALLTEXT,而不是尝试面向未来的事情.


Jos*_*osh 8

来自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
Run Code Online (Sandbox Code Playgroud)

基本上这意味着access_token的长度至少应为1个字符,但对此规范中定义的时间没有限制.

请注意,它们定义VSCHAR =%x20-7E


小智 5

Facebook 访问令牌的长度可以超过 255 个字符。我有很多错误,比如ActiveRecord::StatementInvalid: PG::StringDataRightTruncation: ERROR: value too long for type character varying(255)值是 facebook 访问令牌。不要使用string类型列,因为它的长度是有限的。您可以使用text类型列来存储令牌。