2017-05-22 12 views
4

Microsoft.AspNetCore.Authentication.Facebook libraryを使用してMicrosoftアカウントからプロフィール画像を取得するにはどうすればよいですか?私はクレームを使ってみましたが、プロフィールの画像の価値はありません...私は画像のURLをチェックしてアカウントのソース管理を調べてみましたが、URLはいくつかのパラメータから成り立っています。だから私はfacebookでできるようにURLを構築することはできません...誰かが私を助けることができますか?asp.netコアのMicrosoftアカウントから外部ログインプロフィール画像を取得する方法

+0

おそらくhttps://stackoverflow.com/questions/37904271/how-to-retrieve-facebook-user-profile-picture-within-asp-net-core-mvc-rc2があなたの質問に対する答えです。 –

答えて

0

は、Microsoftのグラフを使用して、Microsoftアカウントからプロフィール画像を取得することができます。プロフィール画像を要求する方法について https://developer.microsoft.com/en-us/graph/quick-start

具体的な指示: https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/profilephoto_get

クイックスタートに従っている場合(ASPを選択します。 「アプリIDとシークレットを取得」をクリックしてサンプルコードをダウンロードすると、簡単にデータを取得できます。

GraphServiceClient graphClient = SDKHelper.GetAuthenticatedClient(); 

var photoStream = await graphService.GetCurrentUserPhotoStreamAsync(graphClient); 

ED IT:申し訳ありませんが、asp.netのコア部分を忘れました(Microsoft.Identity.Clientがasp.netコアで利用可能ではないようです)。

ExternalLoginCallbackでは、var info = await _signInManager.GetExternalLoginInfoAsync();によって返されたExternalLoginInfoオブジェクトからアクセストークンを取得できます。 は(そうでない場合は、アクセストークンは使用できません)認証を設定するときにtrueにSaveTokensを設定することを忘れないでください:

services.AddAuthentication() 
    .AddMicrosoftAccount(options => 
    { 
     options.ClientId = Configuration["ExternalProviders:Microsoft:ClientId"]; 
     options.ClientSecret = Configuration["ExternalProviders:Microsoft:ClientSecret"]; 
     options.SaveTokens = true; 
     ... 

そして、それはhttpリクエストを行うだけの問題だ - このような何か:

var httpClient = new HttpClient(); 
httpClient.SetBearerToken(info.AuthenticationTokens.Where(t => t.Name.Equals("access_token")).First().Value); 
var pictureResult = httpClient.GetAsync("https://graph.microsoft.com/v1.0/me/photo/$value").Result; 
関連する問題