2016-08-26 20 views
1

railsデータベースに保存されたユーザー/パスワードの資格情報に基づいて、外部のhttpsサイトにログインしたいと思います。シングルサインオンのようなもの。外部サイトはログインするAPIを提供していません。ログインフォームのみ。彼らのドキュメントでは、電子メールとパスワードをフォームにロードしてからOKを押すことで、ログインフォームに資格情報を投稿できるとしています。Railsから外部サイトにログイン

しかし、これを行うと、ログインフォームのソースコードを見ることで、誰かがログイン資格情報を見つけることができます。私は機械化を見て、ここにSubmitting POST data from the controller in rails to another websiteRails 3 - Log into another site and keep cookie in sessionのようなクッキーをロードしていますが、それは正しいように見えません。

コントローラから資格情報を自動的に読み込んで、そのサイトにログインするためにすぐに外部サイトに投稿する方法はありますか?

ありがとうございました

+0

:HTTPSを使用しています例えばFacebookの、のために、コードは私のuser_controller.rb

の下に示されていますか?はいの場合は、教えていただけますか? – Raza

+0

できませんでした。あなたがログインするためのフォームを提供したら、ユーザー名/パスワードをプログラムで入力し、javascriptを使ってフォームをポストする必要があります。関与するAPIはないので、解決策は多少壊れています。 –

+0

さて、Mechanizeでこれを行うことができました – Raza

答えて

2

私はOauth2を使用します。ここに良いラッパーです:https://github.com/intridea/oauth2

+0

ありがとうございますが、外部サイトはログインに使用するAPIを提供していません。彼らはログインするためのhttpログインフォームしか持っていません。 –

0

私はこれを機械化によって行うことができました。あなたはこの問題を解決することができましたねえ

def face_book 
    @website = 'https://www.facebook.com/login.php?login_attempt=1&lwv=110' 
    agent = Mechanize.new 
    agent.log = Logger.new "mechanize.log" 
    agent.user_agent_alias = 'Mac Safari' 
    agent.follow_meta_refresh = true 
    agent.redirect_ok = true 
    login_page = agent.get (@website) 
    login_form = login_page.forms.first 
    email_field = login_form.field_with(name: "email") 
    password_field = login_form.field_with(name: "pass") 
    email_field.value = 'PUT_YOUR_EMAIL_HERE' 
    password_field.value = 'PUT_YOUR_PASSWORD_HERE' 
    home_page = login_form.click_button 
    @blah = agent.get("https://m.facebook.com/") 
    end 
関連する問題