После нескольких часов гугления, чтения документации MS и примеров кода я еще больше запутался и нуждаюсь в совете по архитектуре.
По сути, мне нужно выяснить, какие API применимы и как с ними начать.
Фон
У меня есть существующее приложение (в настоящее время приложение XAML + c# win store 8.1) с бэкэндом odata WebAPI 2.2 (а также некоторыми страницами MVC).
Клиентское приложение прекрасно работает на машинах Win 8.1 и Win 10. Серверная часть находится на виртуальной машине Azure.
В настоящее время
- Пользователи входят в приложение (как пользователь, с которым они вошли в Windows), используя свою учетную запись Microsoft.
- Им не нужно вводить имена пользователей/пароли, они просто принимают разрешения (1x), которые я указываю с помощью областей, например. "wl.basic", "wl.emails", "wl.calendars"
- Для этого я использую библиотеки Live Connect (Microsoft.Live.dll, v5.6.0.0)
- Затем я получаю AuthenticationToken от LiveLoginResult.
e.g.
_loginResult.Session.AuthenticationToken
- Который я передаю на сервер вместе с запросами odata.
- Сервер использует это, чтобы найти их LiveID / UserID
e.g.
LiveAuthClient authClient = new LiveAuthClient(clientId, clientSecret, redirectUrl);
string liveIdGuidAsString = authClient.GetUserId(authenticationToken);
- Который затем я использую, чтобы найти соответствующего пользователя в моей БД и передать его содержимое odata в клиентское приложение.
Все хорошо.
Я хочу расширить свое приложение для синхронизации/интеграции с календарями пользователя Outlook
Кажется, разумным способом сделать это в наши дни было бы использование
- API REST для Outlook
- МС График
Также кажется, что MS может отключить Live API, которые я использую в настоящее время, в любое время?
https://msdn.microsoft.com/en-us/library/hh243641.aspx< /а>
Дополнительная сложность
Я также хотел бы (через пару месяцев) расширить приложение до
- быть X-платформой (вероятно, с использованием традиционного Xamarin с совместным использованием кода PCL и «традиционными» проектами платформы xamarin для пользовательского интерфейса, возможно, с использованием MVVMCross)
- разрешить пользователям использовать другие службы для аутентификации (все OAuth 2.0) - например. аккаунты гугл/гмейл
Это означает, что я хотел бы, если возможно, сделать что-то «сырым OAuth» для совместимости и НЕ привязывать себя к каким-либо конкретным API-интерфейсам MS (очевидно, что интеграция календаря Outlook / Outlook.com будет доступна только для тех пользователей с учетными записями MS)
Кроме того, у некоторых существующих пользователей есть учетные записи Outlook.com (которые они используют для входа в Windows), но данные их календаря хранятся в Hosted Exchange 2010.
Похоже, что для доступа к этим данным календаря этим пользователям придется либо переместить все свои данные Outlook 2016 в Outlook.com, либо настроить их как учетные записи Office 365 и перенести данные в новые учетные записи.
Вопросы
<сильный>1. Где/с кем я должен аутентифицироваться, чтобы получить свой код авторизации и токен доступа - MS Graph? или REST API Outlook
Я видел этот ответ (т.е. в основном предпочитаю MS Graph)
<сильный>2. Могу ли я сохранить замечательную функцию «без имени пользователя/пароля, просто принять разрешения» для моих пользователей в Windows 8.1 и 10 с использованием «учетных записей Microsoft»?
Конечно, с MS Graph кажется, что пользователи моей учетной записи Outlook.com / Microsoft не смогут продолжать входить в мое приложение на основе своего пользователя Windows без имени пользователя и пароля?
Документация также предполагает, что для использования MS Graph моими пользователями должны быть Office 365 / Azure Active Directory, чтобы попытаться свести к минимуму влияние и сохранить более широкую аудиторию, если я буду использовать API REST Outlook.
Но тогда предлагаемая библиотека для API-интерфейсов REST Outlook выглядит так: >ADAL, который, кажется, полагается на Azure Active Directory? Так не смогут ли мои существующие пользователи Outlook.com использовать это?
<сильный>3. Как долго я должен заменить Live SDK и использовать что-то другое?
По сути, я сбит с толку множеством вариантов и соображений и могу дать любой совет относительно того, какое направление выбрать.