J'ai cherché sur Google et StackOverflow pour trouver une réponse à ma question, mais je n'en trouve pas.
Je voudrais stocker le access_token dans ma base de données pour un accès hors ligne et je voudrais être sûr de spécifier la longueur correcte de ma colonne.
Je ne peux même pas trouver si c'est juste un nombre ou un mélange entre un nombre et des chaînes.
Avec le récent passage de Facebook aux jetons d'accès cryptés, la longueur du jeton d'accès peut aller jusqu'à 255 caractères. Si vous stockez le jeton d'accès dans votre base de données, la colonne doit pouvoir accueillir au moins varchar (255). Voici un extrait du blog des développeurs de Facebook du 4 octobre 2011:
"Lorsque la migration du jeton d'accès chiffré est activée, le format du jeton d'accès a changé. Le nouveau format du jeton d'accès est complètement opaque et vous ne devez prendre aucune dépendance sur le format de votre code. Un champ varchar (255) sera suffisant pour stocker les nouveaux jetons. "
Article de blog complet ici: https://developers.facebook.com/blog/post/572
la source
Cette réponse n'est plus correcte et je ne trouve pas de valeur corrigée dans la documentation de FB. Nous avons reçu des jetons d'accès de plus de 255 caractères. Nous passons de VARCHAR à un SMALLTEXT à la place pour essayer des choses à l'épreuve du temps.
la source
SMALLTEXT
ouMEDIUMTEXT
? J'avais également auparavant mon access_token limité àVARCHAR(255)
et je suis confronté aux retombées de cela aujourd'hui.À partir de la section 1.4 de
The OAuth 2.0 Authorization Protocol
( draft-ietf-oauth-v2-22 )J'ai cherché les "spécifications du compagnon" mais je n'ai rien trouvé de pertinent et dans la section 11.2.2 il est indiqué
Ce qui semble indiquer que le paramètre access_token est défini dans cette spécification. Je suppose que le paramètre est, mais le jeton d'accès réel n'est pas complètement étoffé.
Mise à jour: La dernière version de cette rédaction de la spécification ( draft-ietf-oauth-v2-31 ) comprend une annexe qui définit mieux à quoi s'attendre du paramètre access_token
Donc, essentiellement, ce que cela signifie, c'est que le jeton d'accès doit avoir au moins 1 caractère mais il n'y a pas de limite sur la durée définie dans cette spécification.
Notez qu'ils définissent VSCHAR =% x20-7E
la source
Le jeton d'accès Facebook peut comporter plus de 255 caractères. J'ai eu beaucoup d'erreurs comme
ActiveRecord::StatementInvalid: PG::StringDataRightTruncation: ERROR: value too long for type character varying(255)
où la valeur était le jeton d'accès Facebook. N'utilisez pas destring
colonne de type car sa longueur est limitée. Vous pouvez utiliser latext
colonne de type pour stocker des jetons.la source
Récemment, notre application les a vus plus de 100 caractères. Je suis toujours à la recherche de documentation pour pouvoir trouver une taille de champ «sûre» pour eux.
la source
Je mettrai à jour la réponse à partir du temps passé.
À partir de la documentation OAuth2,
(Section 4.2.2 de ce document )
Remarque: Facebook utilise OAuth2, comme indiqué sur cette page .
Alors maintenant, aucune information ne semble être disponible sur le portail développeurs de Facebook sur la longueur du token OAuth. Yahoo semble utiliser un jeton de 400 bits, il est donc préférable de supposer qu'une colonne TEXT dans MySQL est plus sûre qu'un varchar.
la source