回答:
私は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に移行し、将来を見据えたものにしようとしています。
SMALLTEXT
またはMEDIUMTEXT
?また、以前はaccess_tokenを制限していたのでVARCHAR(255)
、今日はその影響を処理します。
The OAuth 2.0 Authorization Protocol
(draft-ietf-oauth-v2-22)のセクション1.4から
アクセストークンは、リソースサーバーのセキュリティ要件に基づいて、さまざまな形式、構造、および使用方法(暗号化プロパティなど)を持つことができます。保護されたリソースへのアクセスに使用されるアクセストークン属性とメソッドは、この仕様の範囲を超えており、コンパニオン仕様によって定義されています。
「コンパニオン仕様」を探しましたが、関連するものは見つかりませんでした。セクション11.2.2に、
oパラメーター名:access_token
oパラメーターの使用場所:承認応答、トークン応答
o変更コントローラー:IETF
o仕様書:[[this document]]
これは、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を定義していることに注意してください
時間の経過から回答を更新します。
OAuth2ドキュメントから、
アクセストークンの文字列サイズは、この仕様では未定義のままです。クライアントは、値のサイズに関する仮定を行わないようにする必要があります。許可サーバーは、発行する値のサイズを文書化する必要があります。
(このドキュメントのセクション4.2.2 )
注:このページで言及されているように、FacebookはOAuth2を使用しています。
そのため、OAuthトークンの長さに関する情報は、Facebookの開発者向けポータルで入手できないようです。Yahooは400ビット長のトークンを使用しているようなので、MySQLのTEXTカラムはvarcharよりも安全であると想定するのが最善です。