2

RailsとDevisegemを認証に使用するAPIとWebアプリがあります。DeviseとOmniauthを使用すると、Facebookでサインアップし、WebサイトからFacebookでログインできます。私のAPIはtoken_authenticableとTokensControllerで保護されているので、最初にAPIを操作する場合は、ユーザー名とパスワードをTokensControllerに渡す必要があります。これにより、有効なトークンが提供されます。私の問題は、ユーザーがFacebookにサインアップし、TokensControllerにユーザー名とFacebookトークンを渡してトークンを生成しますか?これを行うための標準的な方法はありますか?

コメントありがとうございます。

4

2 に答える 2

1

コメントありがとうございます。どれが最良の選択肢であるかを考えた後、最終的に行ったのは次のとおりです。

注:クライアント側とサーバー側(API)でコードを分けています

クライアント側:

  • 特定のユーザーの Facebook トークンと Facebook ユーザー ID を取得します。
  • 上記で取得したパラメーターを使用して、TokensControllerからAPI メソッドCreateメソッドを呼び出します。

サーバー側:

  • Facebook トークンと Facebook ユーザー ID を受け取ります。
  • Facebook トークンを使用して、API から Facebook ユーザー ID を取得します。
  • リクエストからの受信 UID と Facebook UID が同じであることを検証します。
  • UID が同じ場合、アプリのランダム トークンを生成し、それを応答で返します。

注: すべての通信は HTTPS 経由で行われます。

于 2012-06-04T20:36:13.763 に答える
1

私の意見では、基準に適合する限り、好きなものを選択できます。

  • それは秘密です
  • それはあなたのために回収可能です
  • 最小限のセキュリティがあります(「123pw」だけではありません)

したがって、2 つの同様のオプションがあります。

  • Facebookトークンを「パスワード」として使用
  • Devise が生成したパスワードを使用する

通常、Devise で Facebook ユーザーを作成するときにパスワードを生成します。-call のようなコードがあると思います:password => Devise.friendly_token[0,20]User.create?

暗号化されたパスワードは通常 60 文字で、Facebook トークンは最大 255 文字です。したがって、個人的には Devise が生成したパスワードを選択します。安全であるには十分な長さであり、API に依存して取得する必要はありません。

于 2012-05-27T18:44:19.990 に答える