3

少し前にSDKを使ってFacebookアプリをいくつか作ったのですが、今はSDKを使わずに作ってみたいと思います。アクセストークンがどのように機能するかについて混乱しています。

FacebookのPHPSDKはアクセストークンをCookieに保存していると思いますが、SOのほとんどの人はそれをデータベースに保存しているようです。アクセストークンはどこに保存すればよいですか?

データベースに保存する場合、ユーザーのIDをCookieに保存しますか?

4

1 に答える 1

8

答えはあなたがそれで何をしたいかに依存するので、これは議論の質問に向かっています。

プロセスの簡単なリマインダー:

  1. (どこかから)トークンを取得する
  2. Facebookに話しかけ、そのトークンに関連付けられたUserIDを取得します
  3. トークンを更新します(長いアクセストークンを探している場合)
  4. トークンを保存します(後で覚えておきたい場合)
  5. UserIDを使用して何かを実行し、トークンを使用して呼び出しを検証します。

トークンはFacebookの「SessionID」です。トークンを保持している限り、トークンを所有しているユーザーを見つけることができます(トークンがまだ有効な場合)。独自のセッションハンドラーを作成した場合は、通常のSessionIDと同じ方法でそのトークンを保持できます。

  • PHPセッションがアクティブである間持続するセッション変数($ _SESSION)内
  • クッキー($ _COOKIE)で、クッキーが有効である間持続します
  • $_GETまたは$_POST変数としてWebページ間を渡すことによって
  • データベース内-ただし、独自の制御下にある別のSessionID($ _SESSION、$ _ COOKIE、$ _ GET、または$ _POSTで渡される)または適切なトークンを取得する別の方法が必要です。

したがって、ミルのものを実行する場合は、サイトに適しているかどうかに応じて、セッションまたはCookieのいずれかに保存します。最も簡単です。

DBに保存する複雑さは、次の2つの目的でのみ実行できます。

  1. アプリケーションを制御している別のセッションシステムがあります(特に、内部セッションシステムを台無しにしたくないサードパーティのアプリなので、独自のラッパーを上に追加します)
  2. ユーザーが不在のときに何かをしたい(たとえば、コメントが独自のモデレーターシステムで承認された後にウォールに投稿する)。この場合、投稿を承認するためのトークンが必要ですが、ユーザーがそこにいないため、$_COOKIEや$_SESSIONなどにアクセスできません。

お役に立てば幸いです。

于 2012-07-30T04:48:39.777 に答える