しばらくの間、キャンバスアプリのFacebook認証に苦労してきました。私のアプローチは次のとおりです。
- ユーザーのセッションでアクセストークンを確認してください。
- ユーザーのFacebookCookieでアクセストークンを確認します。
- のパラメータを確認してください
signed_request
。
これらの3つのステップのいずれかでアクセストークンが見つかった場合:
/me
リソース をリクエストするグラフAPIを呼び出します。- 通話が成功すると、ユーザーはログインします。
- 呼び出しが失敗した場合(原因
OAuthException
)、ユーザーをFacebook OAuthエンドポイントにリダイレクトしてコードを取得し、そのコードを交換して新しいアクセストークンを取得することで、新しいアクセストークンをリクエストします。
セッション、Cookie、またはにアクセストークンが見つからない場合はsigned_request
、ランディングページを表示します。
これは正しい手順ですか?signed_request
ユーザーのアクセストークンの有効期限が切れている場合、パラメーターに存在しないことがよくあります。Facebookが新しいアクセストークンを要求するために承認した方法では、2つのユーザー向けリダイレクトとAPI交換が発生しますが、これは少し重いようです。
私が取り組んでいるセットアップは次のとおりです。
- Rails v3.0.8
- コアラジェムv1.2.1
私はこれらのガイドに従いました: