55

私は Rails API を構築しており、ユーザーが Omniauth ID を使用して認証する方法を構築することに成功しました。

クライアントから auth/identity/callback にポストし、auth_key とパスワードを渡すだけです。
次に、サーバーは、ユーザーがアプリにアクセスして自分自身を識別するために使用するドアキーパー トークンを返します。

この図は、これを示しています。

クライアントとサーバーの関係

クライアントからの Facebook ログインを実装したいと考えていますが、理論的にも実際的にも機能させるのに問題があります。

Omniauth ID を使用する単純な Rails アプリでは、単に auth/facebook を呼び出しますが、このリンクをクライアントに配置すると、サーバーが呼び出され、サーバーがログを記録します。

INFO -- omniauth: (facebook) Request phase initiated.

アプリは ID とシークレットを使用して Facebook で正しく設定されているため、ログイン プロンプトがサーバーに返されている可能性があります。

認証を連鎖させながら混乱しています。どんな助けでも感謝します!

ここに画像の説明を入力

4

3 に答える 3

1

この問題を解決するために私が見つけた最良のリソースは、satellizer github リポジトリの rails サンプル アプリケーションです: https://github.com/sahat/satellizer/tree/master/examples/server/ruby

satellizer コードはAuthController.authenticateメソッドを呼び出します。このメソッドは、各プロバイダーの oauth モデル クラスを使用して、受け取ったコードをアクセス トークンに変換します。次に、ユーザー クラスで、プロバイダーから取得した情報に一致するユーザーを取得できます。

最後に、コントローラ メソッドは jwt トークンをクライアントに返します。

私の場合、メール/パスワード認証にもdeviseを使用しているため、コントローラー部分は少し異なりますが、oauthクラスをそのままコピーすると、魅力的に機能します。

于 2016-05-12T06:32:52.413 に答える
-1

facebook api と通信するため。'omniauth-facebook' gem の使用をお勧めします。この例を複製して、さらに理解を深めることができます: https://github.com/ralphos/omniauth-facebook-example

于 2014-01-21T13:41:51.687 に答える