フォローアップ -
ユーザーが以前にサインアップしたことを覚えていない場合は、一般的に幸運を祈ります;)
あなたが説明したように、ユーザーが何らかの方法でサインインしたら、追加のアカウントをリンクするオプションをユーザーに提供する予定です。
しかし、クロスチェックに関しては、できることは限られています。多くのソーシャル ネットワーク API は実際に電子メール アドレスを提供しますが (OAuth を介してアクセスすると)、これらのアドレスにアクセスできるのは、ユーザーが自分のアドレスを公開することを選択した場合のみであり、これは保証されていません。
また、ユーザーが各ソーシャル ネットワーク アカウントで同じメール アドレスを使用したという保証もありません。
最後に、このような方法で一致する電子メール アドレスを見つけた場合は、ユーザーがアカウントを自動的にリンクすることを望んでいると想定するのではなく、アカウントをリンクするようユーザーに促すことをお勧めします。複数の人格を維持したい人もいます。つまり、「あなたもツイッターにサインアップしているようです。あなたのアカウントをリンクしますか?そうすれば、あなたの人生は生きがいのあるものになります。」
ユーザー アカウントをリンクしたり、電子メール アドレスを提供したりするインセンティブを提供することを検討することもできます (もちろん、これらが何であるかは、Web サイトの機能に基づいて判断する必要があります)。
データベース側で私が取り組んでいる解決策は、複数のアカウントを維持することであり、リンク情報がさまざまな手段で発見された場合、そのリンクはルックアップテーブルに示されます。別の方法は、リンクを見つけたら、複数のアカウントに関連するすべてのエントリを 1 つのアカウント エンティティに結合しようとすることです。ユーザーのアクティビティ レベルとデータベース スキーマの複雑さによって異なります。
私の(精神的/実際の)名前空間では、昔ながらの方法で登録するユーザーには「標準」アカウントがあり、ソーシャルネットワークを使用するユーザーには「エイリアス」アカウントがあります。次に、エイリアスがどこを指すかを定義することが目標になります。つまり、いずれかの手段による後続のログインで両方のアカウントの関連情報が取得されるようにルックアップを作成します (「標準」アカウントの個人データを表示することを優先します)。
ところで、前回の投稿以来、Twitter OAuth を動作させる方法を見つけました。興味がある場合は、詳細について他の回答を参照してください。
JB
こんにちはマット、
私は今同じ問題に取り組んでいます。
ユーザーが通常のサイト アカウントで開始すると仮定すると (「XXX ネットワークに接続」ボタンがすべて表示される場合、必ずしも安全とは言えません
!!!)、OAuth または JavaScript API (facebookConnect または @anywhere - Haven) を使用できます。後者についてはまだ完全には理解できておらず、他のサイトにログインするためのバックエンド ライブラリほど豊富な API を提供しているとは思えないため、推奨するかどうかはわかりません。
API は、ソーシャル ネットワークからのログイン/リダイレクトが成功した後に特定の情報を返す必要があります。たとえば、ユーザー ID やアクセス トークンなどです。これをデータベースに保存して、「実際の」アプリケーション ユーザーをソーシャル ネットワークの ID に関連付けることができます。通信網。
ユーザーがサイトに戻ったときに、次のことができます
1 ソーシャル ネットワーク サービスによって設定された Cookie を確認します (さまざまなスキームは通常、アプリケーション データの sha1 または md5 ハッシュに基づいて署名を確認します。これは、アプリを twitter/facebook に登録するときに取得するデータであり、通常はコンシューマ キーです) 、アプリケーション ID など - 受信した Cookie を使用して) ユーザーがソーシャル ネットワークにログインしたことがわかります。
2 上記のようにデータベース エントリの関連付けを見つけます
3 facebook/twitter 接続が安全であるという前提に基づいて、 ユーザーを手動でログインします。
注意: これは実装と同じくらい安全です (または、必要に応じて facebook/twitter の実装と同じくらい安全です...)
twitter の OAuth は現在のところ完全に機能していないようですが、プロセスの一般的な説明は非常に有益です:
http://dev.twitter.com/pages/auth
幸運を。
J