あなたの最初の質問については:
あなたは自分のOAuthプロトコルの使用を許可するために、FacebookやGoogleとTwitterのためのアプリケーションを作成する必要があります。ヤフーについては分かりません。 Yahooはまだ関連していますか?冗談だ。利用可能なすべてのOmniauthプロバイダー戦略のリストについては、hereにアクセスしてください。
ので、Facebookの:
https://developers.facebook.com/apps
Create app. You'll be given an API Key and an API Secret.
Settings > Basic > Website > Site URL:
your_website_callback_url for production
ツイッター:
https://apps.twitter.com/
Create app. You'll be given an API Key and an API Secret.
Settings > Callback URL:
your_website_callback_url for production
グーグル:
https://console.developers.google.com
Create app. You'll be given an API Key and an API Secret.
Services > Select necessary services and scopes
APIs & auth > Credentials > Create New Client ID:
http://localhost:3000/ for development/testing
your_website_callback_url for production
次に、あなたのGemfile:
gem 'omniauth-facebook'
gem 'omniauth-twitter'
gem 'omniauth-google-oauth2'
戦略を設定するファイルを作成します。大会ではomniauth.rbと命名されています。
# config/initializers/omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do
provider :facebook, 'FACEBOOK_KEY', 'FACEBOOK_SECRET', {
secure_image_url: 'true',
image_size: 'square'
}
provider :twitter, 'TWITTER_KEY', 'TWITTER_SECRET', {
secure_image_url: 'true',
image_size: 'normal'
}
provider :google_oauth2, 'GOOGLE_KEY', 'GOOGLE_SECRET', {
image_size: 50,
image_aspect_ratio: 'square'
}
end
そしてthis railscastとthis wikiに従ってください:各プロバイダに利用できるさまざまなオプションの束がありますが、あなたはそれらが何であるかを調査する必要があります。 ENV['FACEBOOK_KEY']
のような環境変数を使用し、実行時にそれらを変更できるようにコンソールに設定して、特定のファイルでリポジトリにプッシュされないようにする必要があります(特に公開している場合)。 Here's a solutionこの問題。
最後に、追加情報については、各プロバイダのgem wikiを検索する必要があります。たとえば、facebook's omniauth gem readmeは、ユーザーがFacebookから認証したときにFacebookによって返される認証ハッシュの例を提供します。この情報を使用して、ユーザーモデルをカスタマイズすることができます(あなたのやりたいことに応じて自分のフルネームや自分のイメージを更新します)。また、公開されていないユーザーデータにアクセスするための追加のアクセス許可を求める方法についても言及しています。私が言ったように私は本当にRailscastsのように、
と私が考案し、OmniAuthが統合された2つのエピソードを追っ:
編集:あなたの質問に答えるために。これらのエピソードでは、omniauth-openid
gemがGoogleとの認証に使用されています。その欠点は、あなたがアプリケーションを登録しないので、認証プロンプトをカスタマイズできないということです。 FacebookやTwitterでは、名前を選択したり、説明を入力したり、アプリケーションのロゴをアップロードしたりすることができます。また、あなたのウェブサイトの "プライバシー"と "利用規約"ページへのリンクを設定することもできます。これらのすべての小さな詳細は、ユーザーがこれらのサービスにログインしようとすると表示され、想像するとユーザーのコンバージョン率に影響します。
omniauth-openid
では、プロンプトをカスタマイズすることはできません。取得する情報は制限されています(アカウントに関連付けられた電子メールと名前のみ)。それが必要なものなら、あなたはすべて設定されています。ただし、ユーザーの画像を取得したい場合は、ユーザーのGoogle+プロフィールからのみ利用可能な他の個人情報にアクセスしてください。おそらくomniauth-google2と一緒に行く方が良いでしょう。
OmniAuthについての良い点は、基本的な基礎を身につければ、他のプロバイダを追加することは、アプリケーションを登録すること、APIキーと秘密を取得すること、特定の宝石を含めることなどです。最初はFacebookで最初に始めることをお勧めします。これは最も人気のあるサービスなので、ほとんどのドキュメント(または少なくともここではさらに多くの質問があります)のものです。そこから、アプリケーションをビルドし、他の認証方法を追加します。
あなたはDeviseを使用していますか? – Ashitaka
いいえ私は純粋なオムニバスをしています – wgpubs
さて、私はそれに応じて私の答えを編集しました。私は正しい方向にあなたを置くことを願っています!もしあなたが何か問題があれば、Ryan BatesのRailscastsをチェックするのを忘れないで、彼らは私にとって貴重です。 http://railscasts.com/episodes/241-simple-omniauth – Ashitaka