ユーザー登録フォームを持っています。Facebookのログインボタンがあります。Facebookから情報を取得し、その情報をユーザー登録フォームに表示したい。これどうやってするの?私はそれを使用omniauth_facebook
して正常にログインしましたが、ログインしたくありません。そのFacebook情報をユーザー登録フォームフィールドに表示したい。
3 に答える
1
以下に、プロジェクトでOpenID、twitter、およびfacebook認証サービスを管理するのに役立つRailsキャストを示します。
http://railscasts.com/episodes?utf8=%E2%9C%93&search=omniauth
于 2012-12-25T13:36:15.683 に答える
1
ユーザーのアクセストークンを持っているので、 koalaやfb_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 に答える