Страницы

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

вторник, 16 октября 2018 г.

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

Как, используя OneDriveClientExtensions, узнать имя отображаемое пользователя или email.
string[] scopes = { "onedrive.readwrite" }; IOneDriveClient OneDriveClient = OneDriveClientExtensions.GetUniversalClient(scopes); await OneDriveClient.AuthenticateAsync();


Ответ

Напрямую, используя данную библиотеку, не получить данные пользователя. Но из неё можно получить 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(); }

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

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