Facebook OAuth2에서 access_token의 길이는 얼마입니까?


100

내 질문에 대한 답을 찾기 위해 Google과 StackOverflow에서 검색했지만 찾을 수 없습니다.

오프라인 액세스를 위해 access_token을 데이터베이스에 저장하고 싶습니다. 열의 올바른 길이를 지정하고 싶습니다.

나는 그것이 단지 숫자인지 또는 숫자와 문자열의 혼합인지조차 찾을 수 없습니다.

답변:


128

저는 Facebook에서 일하고 있으며 이에 대한 확실한 답변을 드릴 수 있습니다.

액세스 토큰의 저장소에 최대 크기를 지정하지 마십시오. 우리는 데이터를 추가 및 제거하고 인코딩 방식을 변경함에 따라 시간이 지남에 따라 증가 및 축소 될 것으로 예상합니다.

한 곳에서 255 자에 대해 안내했습니다. 해당 정보가 포함 된 블로그 게시물을 업데이트하고 크기에 대한 메모를 포함하도록 새 액세스 토큰 문서를 업데이트했습니다.

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

혼란을 드려 죄송합니다.


84
페이스 북의 결정적인 대답은 우리가 나중에 변경할 것이라는 것이 적절합니다.
Dave Cohen

6
적어도 이렇게하면 변화를 예상 할 수 있으므로 준비가되지 않을 것입니다.
ZeeCoder 2013

제한이 전혀없는 것은 현재 300 바이트 varchar2에 저장하고 있고 301 ~ 305 바이트 토큰으로 오늘 문제가 발생하기 시작했기 때문에 일종의 고통입니다. 대신 클로브를 사용하라고 제안하는 건가요? 아니면 우리가 사용할 수있는 합리적으로 큰 크기가 있습니까?
Trampas Kirk 2014

다음 번에 누군가 "이 필드에 대해 최대 크기를 설정해야합니다"=> "최대 크기를 설정하지 마십시오. 어쨌든 커질 것입니다"라고 물을 때에 대한 대답을 확실히 유지합니다. 정말 좋아요 !! ), 페이스 북은 내 일했다
크리스토프 Fondacci

7
MySQL은 이에 대한 상한선이 필요합니다. 리얼한 상한선을주세요. 예 : 1000 자, 10,000 자, 1,000,000,000 자? 상한선이없는 것은 불합리합니다.
Yahya Uddin

70

최근 Facebook이 암호화 된 액세스 토큰으로 이동함에 따라 액세스 토큰의 길이는 최대 255 자까지 가능합니다. 데이터베이스에 액세스 토큰을 저장하는 경우 열은 적어도 varchar (255)를 수용 할 수 있어야합니다. 다음은 2011 년 10 월 4 일 Facebook 개발자 블로그에서 발췌 한 내용입니다.

"암호화 된 액세스 토큰 마이그레이션을 사용하도록 설정하면 액세스 토큰의 형식이 변경되었습니다. 새 액세스 토큰 형식은 완전히 불투명하며 코드의 형식에 의존해서는 안됩니다. varchar (255) 필드로 충분합니다. 새 토큰을 저장하십시오. "

전체 블로그 게시물 : https://developers.facebook.com/blog/post/572


2
업데이트 된 정보에 대한 +1. 이것은 정말로 받아 들여지는 대답이어야합니다.
David Boike 2011

14
더 이상 유효하지 않은 것 같습니다. 최근에 256 자 길이의 액세스 토큰을 받았습니다.
o_o

2
위의 @o_o와 동일합니다. 현재 255 자 이상을 포함하여 240 자 이상의 긴 토큰을 점점 더 많이 받고 있습니다.
Eric Redon 2013

이상하다. 8000 개의 샘플 중 가장 긴 것은 126 자입니다.
Johnny Oshika 2013 년

1
최근에 344 개의 문자 액세스 토큰을 확인했습니다.
o_o

28

이 답변은 더 이상 정확하지 않으며 FB 문서에서 수정 된 값을 찾을 수 없습니다. 255 자보다 긴 액세스 토큰을 받고 있습니다. 우리는 미래를 대비하기 위해 VARCHAR에서 SMALLTEXT로 이동하고 있습니다.


나는 데이터베이스 오류가 발생했습니다, 그래서 그래, 난 인해 열 생산 응용 프로그램에서 284 개 문자를 얻었다는 VARCHAR (255)입니다 ...
유키 마츠 쿠라

같은. 단지 257 있어요
루이 영

1
SMALLTEXT또는 MEDIUMTEXT? 나는 또한 이전에 내 access_token이 제한되어 VARCHAR(255)있었고 오늘 그 결과를 다루고 있습니다.
NobleUplift

9

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를 정의합니다.


5

Facebook 액세스 토큰은 255 자보다 길 수 있습니다. ActiveRecord::StatementInvalid: PG::StringDataRightTruncation: ERROR: value too long for type character varying(255)값이 facebook 액세스 토큰 인 위치 와 같은 오류가 많이 발생했습니다 . string길이가 제한되어 있으므로 유형 열을 사용하지 마십시오 . text유형 열을 사용 하여 토큰을 저장할 수 있습니다 .


3

최근에 우리 앱은 100 자 이상을보고 있습니다. 나는 그들에 대한 '안전한'필드 크기를 알아낼 수 있도록 여전히 문서를 찾고 있습니다.


8
당신이 말하는이 "문서"는 무엇입니까? : D
Mark

2

시간을 들여 답을 업데이트하겠습니다.

OAuth2 문서에서

액세스 토큰 문자열 크기는이 사양에 정의되지 않은 상태로 남아 있습니다. 클라이언트는 값 크기에 대한 가정을 피해야합니다. 권한 부여 서버는 발행하는 값의 크기를 문서화해야합니다.

( 이 문서 의 섹션 4.2.2 )

참고 : Facebook 은이 페이지에 언급 된대로 OAuth2를 사용하고 있습니다.

따라서 이제 OAuth 토큰의 길이에 대한 정보는 Facebook의 개발자 포털에서 사용할 수없는 것 같습니다. Yahoo는 400 비트 길이의 토큰을 사용하는 것처럼 보이므로 MySQL의 TEXT 열이 varchar보다 안전하다고 가정하는 것이 가장 좋습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.