GoogleとStackOverflowで検索して質問への回答を見つけましたが、見つかりません。
オフラインアクセスのためにaccess_tokenをデータベースに保存し、列の正しい長さを必ず指定したいと思います。
数字だけなのか、数字と文字列の組み合わせなのかさえわかりません。
私はFacebookで働いており、これについて決定的な答えをすることができます。
アクセストークンの最大サイズをストレージに入れないでください。データを追加および削除し、エンコード方法を変更すると、時間の経過とともに拡大および縮小することが予想されます。
255文字であることについて1か所でガイダンスを行いました。その情報を含むブログ投稿を更新し、新しいアクセストークンドキュメントを更新して、サイズに関するメモを追加しました。
https://developers.facebook.com/docs/facebook-login/access-tokens/
混乱させて申し訳ありません。
Facebookの最近の暗号化されたアクセストークンへの移行により、アクセストークンの長さは最大255文字になります。データベースにアクセストークンを保存する場合、列は少なくともvarchar(255)に対応できる必要があります。以下は、2011年10月4日のFacebookの開発者ブログからの抜粋です。
」暗号化アクセストークンの移行を有効にすると、アクセストークンの形式が変更されます。新しいアクセストークンの形式は完全に不透明であり、コードの形式に依存しないでください。Avarchar(255)フィールドは、新しいトークンを保存するのに十分です。 "
完全なブログ投稿はこちら: https://developers.facebook.com/blog/post/572
この答えはもはや正しくなく、FBのドキュメントで修正された値を見つけることができません。 255文字を超えるアクセストークンを受け取っています。将来を保証するために、代わりにVARCHARからSMALLTEXTに移行しています。
The OAuth 2.0 Authorization Protocol
のセクション1.4から( draft-ietf-oauth-v2-22 )
アクセストークンは、リソースサーバーのセキュリティ要件に基づいて、さまざまな形式、構造、使用方法(暗号化プロパティなど)を持つことができます。保護されたリソースへのアクセスに使用されるアクセストークン属性とメソッドは、この仕様の範囲外であり、関連する仕様で定義されています。
「コンパニオン仕様」を探しましたが、関連するものは見つかりませんでした。セクション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文字より長くすることができます。値がfacebookアクセストークンであるActiveRecord::StatementInvalid: PG::StringDataRightTruncation: ERROR: value too long for type character varying(255)
のような多くのエラーがありました。 string
タイプの列は長さが制限されているため使用しないでください。 text
type列を使用してトークンを保存できます。
最近、私たちのアプリは100文字を超える文字を見ています。私はまだドキュメントを探しているので、それらの「安全な」フィールドサイズを把握できます。