1

herokuでホストされるFacebookキャンバスアプリを作成しています。認証には、omniauth-facebookgemでdevisegemを使用しています。

現在、アプリを開くと、メールアドレスとパスワードを使用して「サインイン」するか、[Facebookでサインイン]ボタンをクリックするように求められます。

このページをスキップしたいのですが、ユーザーがアプリをロードすると、自動的に認証されるはずです。

これどうやってするの?

4

1 に答える 1

1

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 値を確認できます。そこにない場合は、代わりにログインフォームにリダイレクトするコードを追加できます。

于 2012-10-23T14:28:03.097 に答える