2012-05-25 14 views
7

ユーザは、これらの2つの様式のいずれかで認証を行うことができますAndroid on Facebook SDKとRailsのdeviseomniauthです。認証は、私のRailsアプリの

Androidで私のRailsアプリケーションを認証するにはどうすれば、サーバーから必要な情報を取得できますか?

NB:この質問には、最近かなりの意見が寄せられています。このスレッドで提供された助言をあまりにも厳密に守らないでください - ウェブは速く動いていて、3年前の日付です!

答えて

2

これは、fb_graph gem(fbgraph!ではなく)を使用して行うことができます。

あなたは自分のgemfileに追加しtokenは、あなたは、Android上で、例えば、FacebookのSDKを使用して得たOAuthのトーク​​ンです

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

を行うことができます。 user.emailがユーザーのメールアドレスになります(必要な権限を設定している場合)。

あなたは、テストのために、このURLを使用することができます。

https://www.facebook.com/dialog/oauth?client_id=YOUR_APP_ID&redirect_uri=https://www.facebook.com/connect/login_success.html&response_type=token 
+1

この回答に注目してください。これは2.5年前のことであり、多くのことが変更されている可能性があることに留意してください。あなたはこれから何を取るかに注意してください! –

0

これは、認証システムの仕組みによってまったく異なります。 Androidアプリからの通信を処理し、APIを使用して両方の間で情報を渡すには、サーバー上にAPIを作成する必要があります。

+0

私が考案し、omniauth使用は、それはかなりそれがどのように動作するかです。 Android側にとっては、Facebook SDKを使用します。 –

+0

Facebook SDKはFacebookでのみ認証されます。あなたのRailsウェブサイトで認証されるAndroidライブラリを作成する必要があります。それがあなたのサーバーから情報を安全に得ることができる唯一の方法です。 –

+0

私のサーバーはOmniauth経由でFacebookに認証されています。私はFacebook SDKを使ってユーザーをログインさせてから、ユーザー/認証/フェイスブックに 'GET 'をして、ユーザーが私のサーバーでも承認されるのかどうか疑問に思っていました。 (これは混乱しますか?自分で説明できない場合は書き直します) –

0

Niraj Shahは完全に正しいですが、答えがあなたのために十分詳細ではないかもしれません。あなたの質問に対する深い答えを得るには、最近リリースされたSecuring an API railscast by Ryan Batesをご覧ください。これは、HTTP Basic Authについて説明します。

さらに高度なオプションを使用してAPIを保護したり、登録ユーザーにデータへのアクセスを提供したりすることもできます。これについてのレールスカストもここにあります:http://railscasts.com/episodes/353-oauth-with-doorkeeper - それはプロのエピソードですが、あなたはそれを見るためにそれにサインアップする必要があります。

+0

リンクありがとうございます。私は、HTTPの組み込み認証ではなく、deviseを使用しています。 –

+0

APIの認証は、ユーザーの認証と切り離されています。理論的には、APIへのすべての要求に対してユーザー名/パスワード(またはプロバイダ+ uid - またはユーザーを一意に識別するために使用できるもの)を送信して、それに対して認証することができます。しかし、これはちょうど良いスタイルです(SSLを使用する場合は、必ずSSLを使用してください)。 OAuthなどのトークンを使用して認証することは、道のりです。 – emrass

+0

OK、トークンベースの認証をサポートしています。これに切り替えるつもりです。それでもFacebookでログインするユーザーをどのように認証するべきかは分かりません。 –

0

フランシスコ、私はまったく同じ必要があります。

token_authenticatableを使用したデファイスのシナリオは簡単で問題はありませんが、Facebookのシナリオを処理する最良の方法はわかりません。 Web側でFB認証のために私はomniauth-facebookを使っています:https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview。私はこれがプロバイダとしてのFBでOAuthを使用していると思うので、OAuthでAPIを確保しているドアキーパについての最新のRailsCastがこのトリックを行うべきであるという可能性は高いです。私はまだそれを試していないが、あなたが私にそれを打つまでそれをすぐに行います。リンクはhttp://railscasts.com/episodes/353-oauth-with-doorkeeperです。

+0

ねえ。私は間もなく、事後的に自分の質問に答えるつもりです。あなたがしなければならないのは 'fb_graph' gem(' fbgraph'ではなく!)を使うことです。次に、あなたのgemfileに追加し、 'user = FbGraph :: User.me(token).fetch'を実行します。ここで' token'はAndroid上のFacebook SDKなどを使って得たoauthトークンです。 'user.email'はユーザの電子メールアドレスを持っています(必要な権限を設定した場合)。私が明確でない場合は、私に連絡するのをためらってください。 –

+0

テスト目的のために、このページを 'irb'と' GET'で使うことができます:https://www.facebook.com/dialog/oauth?client_id=YOUR_APP_ID&redirect_uri=https://www.facebook.com/connect/login_success html&response_type = token 成功した場合は、アクセストークンを含むURIにリダイレクトされます。その後、上記の方法でそのトークンを使用することができます。 –

+0

優れている、それは、感謝します! –