0

そのため、ここ数日、自分のサイトにFacebookとGoogleOAuth2ソーシャルログインを実装してきました。

すべてがうまく機能し、基本的に:

  • ユーザーが自分の電子メールアドレスにログインすると、すでにDBにあるものと比較されます
  • 電子メールが存在する場合、ソーシャルログインはその既存の電子メールに添付され、ユーザーは既存のアカウントにログインします
  • それ以外の場合は、新しいアカウントが作成されます。(私がここで機能することに気付いたように)

しかし、ここで注意が必要な部分があります。Googleは、メール用に2つのドメインを持つことができます。

  • gmail.com
  • googlemail.com

また、Facebookアカウントがgooglemail.comGoogleアカウントで作成された場合(を使用gmail)はリンクされません。今、私は両方のDBをチェックすることによってGoogleとFacebookの関係を解決しましたgmail.comgooglemail.com、それが逆になり、Facebookがアドレスを見つけることができない場合に問題が発生します。

フェイスブックのログイン機能にとを追加して、迷惑メールアドレスgmail.comをチェックできると思っていたのですが、これで予見できない問題が発生するのではないかと思います。googlemail.com

私の頭の中にあるもののいくつかは次のとおりです。

  • 他のAPIなどとの将来の互換性
  • 複雑
  • 安全?verified( Facebook APIのフラグを使用してこれを少し回避し ます)
  • 同じアカウントを指す二重の電子メールドメインで同じ問題を抱えている可能性のある他の電子メールプロバイダー(多分私は巨大な管理不可能なリストを書かなければならないでしょうか?)。

したがって、問題は次のとおりです。Facebookのログイン関数で検索するDB句を追加するのは悪い考えですかgmail.comgooglemail.com

私はただ仮定する必要がgmail.comありgooglemail.com、2つの別々のアカウントですか?

あなたの考えをありがとう、

4

2 に答える 2

1

すべての「googlemail.com」文字列を「gmail.com」に変換してみてください。コンセプトは、システムがgooglemailを見つけたら、それをgmailに変換することです。

例:ユーザーはtest@googlemail.comと入力します

アルゴリズムは次のようになります。

email = "test@googlemail.com"
replace("@googlemail.com","@gmail.com",email )
authenticate(email);
于 2012-07-25T19:23:49.170 に答える
0

ユーザーがFacebookまたはGoogleでログインするときに、メールアドレスに関連するドメインgooglemail.comとドメインの両方を検索するだけで、この問題を実際に解決することにしました。gmail.com

これは非常にうまく機能しているようで、この問題を満たすためにユーザー情報を正規化して変更するよりも優れています。

于 2012-07-30T13:38:04.890 に答える