2012-05-05 11 views
3

現在、Googleの認証情報を使ってRailsアプリのユーザーを認証するにはどうすればよいですか?現在、OmniauthをGoogleの資格情報で使用する正しい方法は何ですか?

Googleは過去1年ほどにサービスに大きな変更を加えました。同時にOmniauthとGoogleについての情報は、私が見ることのできるところからかなり疎です。だから私はこの時点で人々が最良のアプローチであると考えるものを知りたい。

私はDevise + Omniauthを使用しています。ユーザーがGoogleの資格情報を使用してログインできるようにしたいと思います(私はすでに他のプロバイダにこれを行う方法を理解しています)。しかし、ユーザーがGoogle+のストリームやその他のサービスとやり取りできるようにするためのoauthトークンも必要です(APIは現在読んでいるだけですが、私は将来を計画しています)。

だから私の具体的な質問は以下のとおりです。

1)私は、オープンIDまたはomniauth-グーグル-のOAuth2の宝石を使用してへの参照を見てきました。これらの2つのアプローチの間に大きな相違がありますか?現在、「正しい」アプローチと考えられているものはありますか?

2)Googleのエコシステムはどのように「壁を張って」いるのですか?たとえば、ユーザーが自分のG +ストリーム PicassaのアルバムのYouTube動画などを自分のアプリから直接操作できるようにするのは比較的簡単ですか?あるいは、これらの完全に別々の生態系ですか? Googleのomniauthが初期化されるときに特定のサービスをスコープとして定義する必要があることがわかっているようです。しかし、ユーザーが認証された後にサービスがどのように統合されているかは不明です。

私はGoogleとのやりとりに役立つヒントやアドバイスありがとう!

答えて

3

open-id gemは、Gmailアカウントを使用して認証を取得するにはすばやく簡単です。 Twitterのためにあなたは、アプリを登録し、いくつかのコールバックURLを設定し、あなたの鍵と秘密を取得する必要がありますが...この宝石では、あなたが必要なのはこれです:

# Gemfile 
gem 'omniauth-openid' 

# Using pure omniauth 
# omniauth.rb 
Rails.application.config.middleware.use OmniAuth::Builder do 
    provider :openid, :store => OpenID::Store::Filesystem.new('/tmp'), :name => 'google', :identifier => 'https://www.google.com/accounts/o8/id' 
end 

# Using devise 
# devise.rb 
Devise.setup do |config| 
    config.omniauth :open_id, :store => OpenID::Store::Filesystem.new('/tmp'), :name => 'google', :identifier => 'https://www.google.com/accounts/o8/id' 
end 

あなたも鍵と秘密を必要としません!この使いやすさの欠点は、アプリケーションを登録しないため、アプリケーションの名前、説明、ロゴの選択などの認証プロンプトをカスタマイズできないことです。あなたが得るのは、(むしろ醜い)プロンプトだけです。例えば、私が何を意味するかを見るには、this websiteをチェックしてください。またはStackOverflowをチェックすると、彼らもそれを使用します。

さらに重要なことは、ユーザーのメールアドレスと関連する名前にのみアクセスできることです。

だから、私は確かにomniauth-google-oauth2あなたのために行く方法です。アプリをGoogle's Cloud Consoleに登録し、APIキーと秘密情報を取得する必要があります。

私は、Google Oauthに関するドキュメントがほとんどない(または、十分に検索していない可能性があります)ことに同意します。あなたが話したすべての情報(G +ストリーム、youtubeビデオ、..)にアクセスする方法についてのチュートリアルを書くなら、これはうまくいくはずです。

+0

ありがとう、これは私の質問に完全に答えます。あなたは欠けている部分をジグソーパズルに提供しました:open-idはgmailだけですが、google-oauthはアプリ用です。私は質問を投稿してからこのことをたくさんしてきたので、私が見つけたいくつかのことをあなたの答えに追加します。 –

+0

@AndyHarveyそれはあまりにも答えが変わるので、私はあなたの[編集](http://stackoverflow.com/suggested-edits/257241)を拒否しました。私はそれをAshitakaに残して、材料を彼の答えに組み込むかどうかを決めるでしょう。または自分の質問に答えを投稿したい場合は、十分な資料があるようです。 – Gilles

+0

ジル、私はここにいるので、私と一緒に裸です。ハーヴェイの編集はどこで見ることができますか?あなたがそのリンクを投稿するまで、私は単一の通知を得ていませんでした。彼の編集は私に隠されていたのですが、そのサイズのために自分のような司会者にしか見えませんでしたか?とにかく、ハーヴェイ、私はあなた自身の答えとしてこれを投稿すべきだと思います。私はそれを信用したくありません。ありがとう! – Ashitaka

関連する問題