2017-03-02 9 views
4

私はASP.NET Core 1.0のFacebook認証ミドルウェアを使用してユーザープロファイルの画像を取得しようとしています。私はASP.NET Core Facebook認証ミドルウェアユーザーの画像

app.UseFacebookAuthentication(new FacebookOptions() 
     { 
      AppId = Configuration["Authentication:Facebook:AppId"], 
      AppSecret = Configuration["Authentication:Facebook:AppSecret"], 
      Scope = { "public_profile" }, 
      Fields = { "picture" } 
     }); 

のavailbleユーザーの画像を作るためにこれらの構成を追加し、データ

var email = info.Principal.FindFirstValue(ClaimTypes.Email); 

var userName = info.Principal.FindFirstValue(ClaimTypes.GivenName); 

しかし、そこにあるように私は今、ユーザーの画像を取得することができますどのように取得するために管理していますいいえ申し立てのタイプそれのために?

+0

この場合、どのように 'info'を定義しましたか? –

答えて

4

設定は、あなたがこのhttps://graph.facebook.com/{user-id}/pictureのようにFacebookのGraph APIを使用して画像を得ることができます彼の答えに言ったように。

例コード:

var info = await _signInManager.GetExternalLoginInfoAsync(); 
var identifier = info.Principal.FindFirstValue(ClaimTypes.NameIdentifier); 
var picture = $"https://graph.facebook.com/{identifier}/picture"; 

あなたはinfoがnullでない場合とinfo.LoginProviderするFacebookであるかどうかを確認することをお勧めします。

+0

だから、NameIdentifierはユーザーIDですか? – Ahmad

+0

@Ahmadはい、ソースコード[こちら](https://github.com/aspnet/Security/blob/release/src/Microsoft.AspNetCore.Authentication.Facebook/FacebookHandler.cs#L48)が表示されます。 – tmg

+0

完璧な男!タイ!それは働いた – Ahmad

1

一般的に、Fields = { "picture" }を指定すると、UserInfo Endpointの標準(oauth)実装が応答して画像を返すことがあります。

Facebook Graph APIはUserInformationエンドポイントとしてhttps://graph.facebook.com/v2.6/meを提供し、ASP.NET Core Facebook Auth Middlewareはそれをクレームの人口集計に使用します。

この\meエンドポイントを使用すると、Facebook Graph APIが応答としてpictureを返さないという問題があります。彼らはこれまでにそうしていたが、何らかの理由でそれを取り除いた。 SO関連:facebook oauth, no picture with basic permissions

しかし、あなたが使用して画像を得ることができます: https://graph.facebook.com/USERNAME/picture

+0

だから私はJavaScriptでそれをしなければならないだろうか? username/user_idを取得して取得しますか? – Ahmad

+0

このミドルウェアに関するいくつかの例や文書を教えてください。 – Ahmad

+0

@Ahmadあなたはクライアントまたはサーバー側でこの呼び出しを行うことができます - リクエストとともにアクセストークンを使用してください。私はミドルウェアに関する最良の情報が今やgithubのソースだと恐れています。https://github.com/aspnet/Security/tree/master/src/Microsoft.AspNetCore.Authentication.Facebook – Set