herokuでホストされるFacebookキャンバスアプリを作成しています。認証には、omniauth-facebookgemでdevisegemを使用しています。
現在、アプリを開くと、メールアドレスとパスワードを使用して「サインイン」するか、[Facebookでサインイン]ボタンをクリックするように求められます。
このページをスキップしたいのですが、ユーザーがアプリをロードすると、自動的に認証されるはずです。
これどうやってするの?
herokuでホストされるFacebookキャンバスアプリを作成しています。認証には、omniauth-facebookgemでdevisegemを使用しています。
現在、アプリを開くと、メールアドレスとパスワードを使用して「サインイン」するか、[Facebookでサインイン]ボタンをクリックするように求められます。
このページをスキップしたいのですが、ユーザーがアプリをロードすると、自動的に認証されるはずです。
これどうやってするの?
Facebook アプリがユーザーの許可を求めており、ユーザーがそれを承認している場合、Rails アプリに渡される signed_request パラメーターに必要な詳細が含まれている必要があります。したがって、パラメータをデコードして、ハッシュ自体から Facebook のユーザー ID を取得することができます。
次のようなことを試してください:
class ApplicationController
before_filter :inspect_signed_request
protected
def base64_url_decode(input)
input += ('=' * (4 - input.length % 4) % 4)
Base64.decode64(input.tr('-_', '+/'))
end
def inspect_signed_request
encoded_sig, payload = params[:signed_request].split('.', 2)
# decode the data
sig = base64_url_decode(encoded_sig)
data = JSON.parse(self.class.base64_url_decode(payload))
raise data.inspect
end
end
基本的に例外が発生し、署名されたリクエストの詳細が表示されます。基本的に、それをそのまま解析して、署名されたリクエスト FB ID 値を確認できます。そこにない場合は、代わりにログインフォームにリダイレクトするコードを追加できます。