Похоже, вы пытаетесь получить User displayName
после входа пользователя в веб-приложение.
Зависит от того, как вы получаете токен. Если вы получаете токен по протоколу Client_Credential
, вы не захотите t displayName
, используя параметры запроса , как это. Вы должны использовать ROPC
, если хотите получить вот так.
Вы можете попробовать следующий способ:
Token And API Request
string tokenUrl = $"https://login.microsoftonline.com/YourTenent/oauth2/token";
var tokenRequest = new HttpRequestMessage(HttpMethod.Post, tokenUrl);
tokenRequest.Content = new FormUrlEncodedContent(new Dictionary<string, string>
{
["grant_type"] = "password",
["client_id"] = "b603c7be-a866_client_id_6921e61f925",
["client_secret"] = "Vxf1SluKb_client_secret_eZ8wL/Yp8ns4sc=",
["resource"] = "https://graph.microsoft.com",
["username"] = "Login_User_Name.onmicrosoft.com",
["password"] = "User_Password"
});
dynamic json;
dynamic results;
HttpClient client = new HttpClient();
var tokenResponse = await client.SendAsync(tokenRequest);
json = await tokenResponse.Content.ReadAsStringAsync();
results = JsonConvert.DeserializeObject<AccessTokenClass>(json);
//New Block For Accessing Data from Microsoft Graph API
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "https://graph.microsoft.com/v1.0/me/?$select=displayName");
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", results.access_token);
HttpResponseMessage response = await client.SendAsync(request);
dynamic selectUserDisplayName = JsonConvert.DeserializeObject<dynamic>(await response.Content.ReadAsStringAsync());
Class Used
public class AccessTokenClass
{
public string token_type { get; set; }
public string expires_in { get; set; }
public string resource { get; set; }
public string access_token { get; set; }
public string refresh_token { get; set; }
}
Вы можете обратиться к этому Официальному документу Надеюсь, это поможет вам.