Страницы

Поиск по вопросам

среда, 11 декабря 2019 г.

Как узнать имя пользователя или email в onedrive sdk?

#c_sharp #uwp #windows_10 #onedrive


Как, используя OneDriveClientExtensions, узнать имя отображаемое пользователя или email.

string[] scopes = { "onedrive.readwrite" };
IOneDriveClient OneDriveClient = OneDriveClientExtensions.GetUniversalClient(scopes);
await OneDriveClient.AuthenticateAsync();

    


Ответы

Ответ 1



Напрямую, используя данную библиотеку, не получить данные пользователя. Но из неё можно получить AccessToken, а затем, используя его, получить данные пользователя при помощи REST API. Имя пользователя можно получить примерно так: string[] scopes = new string[] { "onedrive.readwrite" }; var client = OneDriveClientExtensions.GetUniversalClient(scopes) as OneDriveClient; await client.AuthenticateAsync(); // забираем access_token var AccessToken = client.AuthenticationProvider.CurrentAccountSession.AccessToken; // запрашиваем данные авторизованного пользователя REST API var uri = new Uri($"https://apis.live.net/v5.0/me?access_token={AccessToken}"); var httpClient = new System.Net.Http.HttpClient(); var result = await httpClient.GetAsync(uri); // получаем данные пользователя в JSON и разбираем его string jsonUserInfo = await result.Content.ReadAsStringAsync(); if (jsonUserInfo != null) { var json = Newtonsoft.Json.Linq.JObject.Parse(jsonUserInfo); string username = json["name"].ToString(); } Email можно получить примерно так (не забудьте добавить wl.emails в список разрешений scopes) string[] scopes = new string[] { "onedrive.readwrite", "wl.emails" }; var client = OneDriveClientExtensions.GetUniversalClient(scopes) as OneDriveClient; await client.AuthenticateAsync(); var AccessToken = client.AuthenticationProvider.CurrentAccountSession.AccessToken; var uri = new Uri($"https://apis.live.net/v5.0/me?access_token={AccessToken}"); var httpClient = new System.Net.Http.HttpClient(); var result = await httpClient.GetAsync(uri); string jsonUserInfo = await result.Content.ReadAsStringAsync(); if (jsonUserInfo != null) { var json = Newtonsoft.Json.Linq.JObject.Parse(jsonUserInfo); string username = json["name"].ToString(); string email = json["emails"]["account"].ToString(); }

Комментариев нет:

Отправить комментарий