2012-01-28 6 views
2

Omniauthを使用したユーザーシステムの構築に関する一般的な質問:複数の認証方法を有効にすると、ユーザーが他のプロバイダーを介して再度サインアップできないようにしたい偶然にまたは意図的に。私の試みは電子メールアドレスを確認することでしたが、これはほとんどのプロバイダにとって有効です。Omniauth:ユーザーのマッピング

しかし、Twitter経由で認証を追加すると、このシステムはTwitter won't publish the email of the userから失敗します。

私が知ることができる唯一の方法は、Twitter(または電子メールを公開しない他のログインプロバイダ)を使用してサインインするときに登録の第2ステップを追加することでした。これを行う便利な方法は?

ご協力いただきありがとうございます。

答えて

0

あなたはLinkedInで同じ問題が発生します。また、私は自分が参加したサイトごとに個人的に別のメールを使います。あなたが私の電子メールを要求しても、あなたが私を識別するのには役に立たないでしょう。また、DeviseではなくOmniauthだけを使用している場合は、ユーザーがログインして他のサービスにもログインしているかどうかを確認し、アカウントをマージすることができます。人々は通常彼らのtwitter/fbアカウントに常にサインインされているので、これは不必要なようです。あなたが登録ページを提供する前に両方をチェックしている限り、あなたは金色でなければなりません。あなたが本当に複数のアカウントを持つことから人々を止めようとしているなら、あなたは携帯電話番号を要求し、検証するか、それを行う単一のプロバイダに厳密に頼る必要があります。

0

本当に気になるのは、ユーザーが認証されていれば、認証されたユーザーのユーザーIDと認証に使用されたサービスのユーザーIDを追跡するだけです。だから、ある人がTwitterの下でログインしてFacebookの下でログインしようとすると、そのtwitterユーザーに関連付けられているuser_id(あなたがRyan Bateのrailscastsに従っていればUIDではない)を知る必要があり、そのfacebookユーザーは同じuser_idを持つ必要があります。あなたはまだ彼が2番目のサービスを使用して認証させることができますが、最後のステップはログインしているuser_idのサービスをチェックすることです(2番目のサービスの下に潜入しようとした場合、それを処理できます。

関連する問題