1

ユーザー登録フォームを持っています。Facebookのログインボタンがあります。Facebookから情報を取得し、その情報をユーザー登録フォームに表示したい。これどうやってするの?私はそれを使用omniauth_facebookして正常にログインしましたが、ログインしたくありません。そのFacebook情報をユーザー登録フォームフィールドに表示したい。

4

3 に答える 3

1

以下に、プロジェクトでOpenID、twitter、およびfacebook認証サービスを管理するのに役立つRailsキャストを示します。

http://railscasts.com/episodes?utf8=%E2%9C%93&search=omniauth

于 2012-12-25T13:36:15.683 に答える
1

ユーザーのアクセストークンを持っているので、 koalafb_graphなどのgemを使用してユーザー情報を取得し、フォームにそのような情報を入力できます。

fb_graphの使用:

user = FbGraph::User.me(ACCESS_TOKEN).fetch

次に、あなたのフォームで:

<form>
   <input type="text" id="first_name" value="<%= user.first_name %>">
   <input type="text" id="last_name" value="<%= user.last_name %>">
   ....
</form>

これによりフォームにユーザー情報が入力されますが、とにかくトークンを取得するにはログインする必要があるため、Facebookでログインするときにコールバック関数でユーザーを作成してみませんか?

于 2012-12-25T21:33:06.430 に答える
0

@ JasonTruluck&@stsdご支援いただきありがとうございます。

私はこれを行い、OmniAuthを使用しています。

https://github.com/plataformatec/devise/wiki/OmniAuth:-概要

私のコントローラーでこれを定義します

private

  def authentication_sign_in
    omniauth = request.env["omniauth.auth"]
    user = User.new
    user.apply_omniauth(omniauth)
    session[:omniauth] = {:firstname => user.firstname, :lastname => user.lastname, :email => user.email }
    session[:provider] = omniauth['provider']
    session[:uid] = omniauth['uid']
    redirect_to new_member_registration_url
  end

そして私の登録コントローラーで

def new
  if session[:omniauth]
    resource = build_resource(session[:omniauth])
  else
    resource = build_resource({})
  end
  respond_with resource
end
于 2012-12-26T12:44:52.590 に答える