この答えがあまり明白ではないことを願っています。これを始めたばかりで、ガイダンスが必要なようです。
私が読んだものから、私は次の要件を取得します。
- 別のアプリの認証機関になることができる必要があります
- サードパーティのアプリは、認証トークンを介して資格情報を交換および検証したいと考えています
- サードパーティのアプリは、API呼び出しへのURLがあなたのアプリからこれを行うことを望んでいます
これについては広い意味で説明し、具体的な解決策を探してみましょう。基本的に、安全な認証トークンを生成する方法が必要です。Deviseは、authlogicおよび他のいくつかと一緒にこれを行う必要があります。あなたがしたくないことは、あなた自身の認証トークン生成をロールバックしようとすることです。間違いなくあなたのためにこれを行うためにそこにある宝石を使用してください。
トークンが生成されたら、基本的なトランザクションの概要を示します。ここでは、認証トークンがパラメーターとしてコントローラーアクションに渡されるだけです(httpsはこのトランザクションの友だちです、参考までに)。

- サードパーティのアプリは、アプリから提供されたトークンを使用してAPI呼び出しを行います
- アプリは認証トークンの有効性を確認し、認証が成功した場合は、要求されたアクションを実行します
- 認証が成功した場合、アプリは認証成功/失敗コード、およびサードパーティアプリが要求したその他の応答データで応答します
トークンがサードパーティのアプリに渡され、それを使用してAPIリクエストを作成できるようにする方法は、アプリをどのように機能させるかによって異なります。ただし、一般的な方法は、次のパターンに従うメソッドを使用することです。
- サードパーティのアプリがユーザーに代わってAPIリクエストを行う必要がある場合、サードパーティのアプリはアプリにリダイレクトし、そこでユーザーは資格情報を入力します(まだ入力していない場合)。このように、サードパーティのアプリがユーザーのユーザー名とパスワードを直接取得することはありません。
- 認証が成功すると、アプリはコールバックURLにリダイレクトし、アプリによって生成された認証トークンをパラメーターとして渡します。その認証トークンは、認証トークンの有効期限が切れるまで、および有効期限が切れない限り、将来のAPI呼び出しで使用されるものです(もちろん、認証機関であるため、有効期限が切れるのはあなた次第です)。
可能であれば、サードパーティの認証として機能するOAuthプロバイダーまたはその他のメカニズムを実際に使用できると、アプリとサードパーティのアプリの両方が信頼できるようになります。そのルートをたどるには、次のRailscastをチェックしてください:http://railscasts.com/episodes/235-omniauth-part-1
...しかしもちろん、既存のアプリ、特にエンタープライズアプリを使用しているため、oauthプロバイダーをアプリケーションに統合できることはあまり一般的ではありません。ただし、いずれの場合も、可能な場合は常に、認証メカニズムを別のパーティにオフロードすることが望ましいです。これは主に、セキュリティの専門家が認証サービスについて心配し、更新し、アプリコードをあなたに任せてほしいためです。
一方、これを解決する方法としてOAuthプロバイダーを使用しない場合でも、上記のrailscastは、独自のAPI/コールバックメカニズムを構築する際に従うべきアイデアとパターンを提供します。最終的には、一連のAPI呼び出し/アクションになります。もちろん、ルート(これらのAPI呼び出しへのURL)は何でもかまいません。しかし、例として、それらは次のようになります。
/api/auth/:id {:controller=>"api", :action=>"auth"}
...これは、パラメーターとして、サードパーティアプリを識別する一意のキー、サードパーティアプリの秘密鍵(基本的にはパスワード)、および成功と失敗の両方のコールバックURLを受け取り、成功/失敗で応答します。成功すると有効な認証トークン。
/api/some/restful/resource/call # example API call for some RESTful resource you make available
... etc. ...
私が言ったように、サードパーティの認証プロバイダーを使用しない場合でも、私が投稿したレールキャスト(およびフォローアップエピソード)に従うと、他の堅牢なAPIが使用する実装パターンがわかります。Facebook認証を行うためのデモアプリケーションを設定することも非常に有益であり、ワークフローを理解するためだけに、おそらく数時間しかかかりません。