Как получить идентификатор пользователя с помощью службы OneDrive в наборе инструментов сообщества uwp

Я использую службу OneDrive в наборе инструментов сообщества uwp. Я могу получить все папки, но не знаю, как получить идентификатор пользователя (конечно, не адрес электронной почты, я имею в виду уникальный идентификатор, представляющий пользователя).

Кто может помочь, спасибо.

if (await OneDriveService.Instance.LoginAsync())
{
    _appFolder = await OneDriveService.Instance.AppRootFolderAsync();
    ShowBusy(false);
}

person Vincent    schedule 14.12.2017    source источник


Ответы (2)


При отладке я нахожу идентификатор пользователя, расположенный в OneDriveService.Instance ---- Provider ---- AuthenticationProvider ---- CurrentAccountSession ---- UserId, но не знаю, как его получить

Если вы проверите исходный код инструментария сообщества, вы обнаружите, что CurrentAccountSession принадлежит классу MsaAuthenticationProvider. И этот класс находится в Microsoft.OneDrive.Sdk.Authentication. Если вы хотите получить UserId, вам нужно будет изменить исходный код инструментария сообщества и скомпилировать собственную версию самостоятельно.

Например, в OneDriveService.cs, вы можете преобразовать _accountProvider в MsaAuthenticationProvider вот так (_accountProvider as MsaAuthenticationProvider).CurrentAccountSession.UserId.

person Xie Steven    schedule 19.12.2017

Невозможно получить идентификатор пользователя. Вы можете внедрить его, а затем поднять для него PR, или вы можете поднять вопрос и посмотреть, как это пойдет.

https://github.com/Microsoft/UWPCommunityToolkit/issues

person Hermit Dave    schedule 14.12.2017
comment
При отладке я нахожу идентификатор пользователя, расположенный в OneDriveService.Instance ---- Provider ---- AuthenticationProvider ---- CurrentAccountSession ---- UserId, но не знаю, как его получить - person Vincent; 14.12.2017
comment
@Vincent Если вы проверите исходный код набора инструментов сообщества, вы обнаружите, что CurrentAccountSession принадлежит классу MsaAuthenticationProvider. И этот класс находится в Microsoft.OneDrive.Sdk.Authentication. Если вы хотите получить UserId, вам нужно будет изменить исходный код инструментария сообщества и скомпилировать собственную версию самостоятельно. - person Xie Steven; 18.12.2017
comment
Например, в OneDriveService.cs, вы можете преобразовать _accountProvider в MsaAuthenticationProvider вот так (_accountProvider as MsaAuthenticationProvider).CurrentAccountSession.UserId - person Xie Steven; 18.12.2017
comment
@XavierXie-MSFT Я использовал в своем коде, он работает. Спасибо. string userId = (OneDriveService.Instance.Provider.AuthenticationProvider as MsaAuthenticationProvide).CurrentAccountSession.UserId; - person Vincent; 18.12.2017