12

現在、Rails バックエンドを使用して iPhone アプリを作成しています。私は iphone で facebook のシングル サインオン (SSO) のみを使用しており、認証はクライアント側でうまく機能します。バックエンドとしてdevise on railsを使用しています。

私は、すでに保護された Web サービスにもアクセスする iOS アプリでの Facebook 認証の設計について調べました。

devise には token_authenticable と呼ばれるものがあり、これは基本的にそのスレッドのステップ 5 で説明されている「チケット」です。これが私が見る現在の流れです

  1. ユーザーが電話で facebook SSO にサインオンする
  2. ユーザーは { access_token: X } を使用して myserver.com/sessions/fb_sso を呼び出します
  3. サーバー側 (SessionsController#fb_sso で、access_token を使用して facebook への API 呼び出しを行います)
  4. access_token が有効な場合、ユーザーが db に存在するかどうかを確認します。ユーザーが存在しない場合は、新しいユーザーを作成します
  5. これで、{ user_id: X, devise_auth_token: Y } を 1 の呼び出しに戻すことができます)

これはかなり簡単です。ただし、いくつか質問があります。

  1. devise_auth_token を使用すると、devise から sign_in("user", resource) を呼び出す必要がなくなるということですか? (ここにありますhttp://jessewolgamott.com/blog/2012/01/19/the-one-with-a-json-api-login-using-devise/ )
  2. 3 ~ 4 のコードを配置するのに最適な場所はどこですか?
  3. このトピックについては、Google であまり見つけられないようです。非常に一般的なプロセスのチュートリアルが少ないのはなぜですか? 露骨に明らかな何かが欠けていますか?
4

2 に答える 2

1

omn​​iauth-facebook gem を使用できないのはなぜですか。アクセストークンを取得するための非常に簡単なソリューションであり、デバイスを使用する場合、その可能性は 2 倍になります。別のログイン時に別のアクセス トークンを取得する必要があることを確認してください。

このリンクから移動できますhttps://github.com/pramodv-nyros/social-login-in-rails

于 2014-01-28T07:06:22.217 に答える
0

サーバーとiOSクライアントで同じトークンを使用する必要があります。簡単な解決策は、デバイス+オムニ認証によってすべてのロジックをサーバー側に配置することです。iOSはサーバー側からのUIと応答のみを処理します。Facebook iOS SDKを使用するようにiOSからトークンを取得する場合は、トークンをサーバー側に通知する必要がありますが、安全ではないようです。

于 2012-11-24T04:54:29.837 に答える