#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(); }
Комментариев нет:
Отправить комментарий