ASP.NET MVC 5 (現在 RC1 バージョンを使用) で Web サイトを開発しています。このサイトは、ユーザー認証と初期プロファイル データの取得に Facebook を使用します。
認証システムには、新しい OWIN ベースの ASP.NET Identity エンジンを使用しています ( http://blogs.msdn.com/b/webdev/archive/2013/07/03/understanding-owin-forms-authentication-in-mvc -5.aspx )。これは、外部プロバイダーによる認証プロセスが大幅に簡素化されるためです。
問題は、ユーザーが最初にログインしたら、Facebook プロファイルからメール アドレスを取得したいのですが、このデータが生成されたクレームに含まれていないことです。だから私はアドレスを取得するためにこれらの代替案を考えました:
ASP.NET ID エンジンに、Facebook から取得してクレームに変換するデータ セットに電子メール アドレスを含めるように指示します。これが可能かどうかはまったくわかりません。
Facebook グラフ API ( https://developers.facebook.com/docs/getting-started/graphapi ) を使用して、Facebook ユーザー ID (要求データに含まれています) を使用して電子メール アドレスを取得します。ただし、ユーザーが自分のメール アドレスを非公開に設定している場合、これは機能しません。
Facebook グラフ API を使用しますが、Facebook ユーザー ID ( https://developers.facebook.com/docs/reference/api/user )の代わりに「me」を指定します。しかし、アクセス トークンが必要であり、ASP.NET がユーザー データを取得するために使用するアクセス トークンを取得する方法 (または可能かどうか) がわかりません。
質問は次のとおりです。
Facebook から追加情報を取得してクレーム データに含めるように ASP.NET Identity エンジンに指示するにはどうすればよいですか?
または、生成されたアクセス トークンを取得して、Facebook 自身に問い合わせるにはどうすればよいですか?
ありがとうございました!
注: 認証システムの場合、私のアプリケーションは、この SO 回答にリンクされているサンプル プロジェクトに基づくコードを使用します: https://stackoverflow.com/a/18423474/4574