Szukałem w Google i StackOverflow odpowiedzi na moje pytanie, ale nie mogę jej znaleźć.
Chciałbym przechowywać access_token w mojej bazie danych w celu uzyskania dostępu w trybie offline i chciałbym upewnić się, że określam prawidłową długość mojej kolumny.
Nie mogę nawet znaleźć, czy to tylko liczba, czy połączenie liczby i ciągów znaków.
Dzięki niedawnemu przejściu Facebooka na zaszyfrowane tokeny dostępu długość tokena dostępu może wynosić do 255 znaków. Jeśli przechowujesz token dostępu w swojej bazie danych, kolumna powinna być w stanie pomieścić co najmniej varchar (255). Oto fragment z bloga deweloperów Facebooka z 4 października 2011 r .:
„Po włączeniu migracji zaszyfrowanego tokena dostępu zmienił się format tokena dostępu. Nowy format tokena dostępu jest całkowicie nieprzejrzysty i nie należy polegać na formacie w swoim kodzie. Wystarczy pole varchar (255), aby przechowywać nowe tokeny ”.
Pełny post na blogu tutaj: https://developers.facebook.com/blog/post/572
źródło
Ta odpowiedź nie jest już poprawna i nie mogę znaleźć poprawionej wartości w dokumentach FB. Otrzymaliśmy tokeny dostępu dłuższe niż 255 znaków. Zamiast tego przechodzimy od VARCHAR do SMALLTEXT, aby spróbować przyszłościowo.
źródło
SMALLTEXT
czyMEDIUMTEXT
? Wcześniej miałem również ograniczony access_token doVARCHAR(255)
i dziś mam do czynienia z skutkami tego.Z sekcji 1.4
The OAuth 2.0 Authorization Protocol
( draft-ietf-oauth-v2-22 )Szukałem „specyfikacji towarzyszących”, ale nie znalazłem nic istotnego, aw sekcji 11.2.2 jest napisane
Co wydaje się wskazywać, że parametr access_token jest zdefiniowany w tej specyfikacji. Wydaje mi się, że parametr jest taki, ale rzeczywisty token dostępu nie jest w pełni dopracowany.
Aktualizacja: Najnowsza wersja tego zapisu specyfikacji ( draft-ietf-oauth-v2-31 ) zawiera dodatek, który lepiej definiuje, czego można oczekiwać od parametru access_token
Zasadniczo oznacza to, że access_token powinien mieć co najmniej 1 znak, ale nie ma ograniczeń co do długości zdefiniowanej w tej specyfikacji.
Zauważ, że definiują VSCHAR =% x20-7E
źródło
Token dostępu do Facebooka może mieć więcej niż 255 znaków. Miałem wiele błędów, takich jak
ActiveRecord::StatementInvalid: PG::StringDataRightTruncation: ERROR: value too long for type character varying(255)
token dostępu do Facebooka. Nie należy stosowaćstring
typ kolumny, ponieważ jego długość jest ograniczona. Możesz użyćtext
kolumny typu do przechowywania tokenów.źródło
Ostatnio w naszej aplikacji widzieliśmy już ponad 100 znaków. Wciąż szukam dokumentacji, aby móc określić dla nich „bezpieczny” rozmiar pola.
źródło
Zaktualizuję odpowiedź na podstawie spędzonego czasu.
Z dokumentacji OAuth2,
(Sekcja 4.2.2 niniejszego dokumentu )
Uwaga: jak wspomniano na tej stronie, Facebook używa protokołu OAuth2 .
Tak więc teraz wydaje się, że na portalu deweloperów Facebooka nie ma żadnych informacji o długości tokena OAuth. Wydaje się, że Yahoo używa tokena o długości 400 bitów, więc najlepiej założyć, że kolumna TEXT w MySQL jest bezpieczniejsza niż varchar.
źródło