проблема при попытке выкупить токен для информации о пользователе в Microsoft Graph API - PullRequest
2 голосов
/ 02 марта 2020

как только пользователь входит в свою учетную запись microsoft в веб-приложении, происходит перенаправление на метод, который направлен на извлечение кода пользователя и обмен его на токен, наконец, когда я пытаюсь использовать токен с API, при выполнении http-запроса через метод get он завершается неудачно, здесь я показываю код, он был выполнен на C#:

var EmailRequest = "https://graph.microsoft.com/v1.0/me/?$select=displayName";
var Request = WebRequest.Create(EmailRequest);
Request.Headers.Add("Authorization", "Bearer " + accessToken );
var Response = (HttpWebResponse)Request.GetResponse(); 

1 Ответ

0 голосов
/ 02 марта 2020

Похоже, вы пытаетесь получить 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; }

    }

enter image description here

Вы можете обратиться к этому Официальному документу Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...