1

DeviseとOAuthを使用して、ソーシャルログイン(Facebook、Twitterなど)をRailsアプリと統合しました。リクエストとコールバックはすべてうまく機能し、ユーザーはアプリを認証して効率的にログインできます。

私の問題はこれです:

Deviseを使用すると、私のサイトのユーザー名としてユーザーの電子メールアドレスが使用されます。したがって、ユーザーがソーシャルサイトを介して初めてログインするときはいつでも、ユーザーがログインしたソーシャルサイトを示すために、アカウントの「接続」レコードが保存されます。私のサイトにまだアカウントを持っていない場合は、コールバック配列のメールアドレスを使用してアカウントが作成されます。接続は、後で使用するために返されたトークンとシークレット(FB投稿、ツイートなど)とともに保存されます。

残念ながら、Twitterはメールアドレスを提供していません。これを回避するために、Twitterでログインする初めてのユーザーには、アカウントを作成できるようにメールアドレスを入力するようにお願いしています。しかし、彼らが私のサイトにすでにアカウントを持っている場合、どうしたらよいかわかりません。一致するメールアドレスが与えられていないため、すでにそうなっているかどうかを確認できません。これにより、最終的にユーザーが複数のアカウントを持つ可能性があります。

それで、私は少し途方に暮れています、そして誰かが何か提案があれば、それは非常に役に立ちます。ありがとう!:)

4

1 に答える 1

0

{provider, twitter identifier} などの oauth プロバイダー情報もデータベースに保存し、メール ID の代わりにそれに基づいて twitter oauth をチェックする必要があります。

最も簡単な方法は、ログインが twitter 経由の場合に少し異なるフローを追加することです。初めて Twitter にログインするユーザーにメール ID を尋ねます。ユーザー テーブルに、tw_id という列を追加し、ユーザーの Twitter 識別子を追加します。次回は Twitter 経由でのログインの場合は、プロバイダーのメールではなく tw_id を確認して、通常のアプリ フローに進みます。

于 2013-06-09T07:48:32.923 に答える