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

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

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

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



답변

저는 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로 이동하고 있습니다.


답변

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


답변

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를 사용하고 있습니다.

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