Я разрабатываю WP8.1 и, вероятно, буду переносить другие формы.
Я хочу интегрировать функциональность OneDrive, однако я не могу понять, в чем разница между LiveSDK
(от пакетов Nuget) и OneDrive
API от https://dev.onedrive.com
Кажется, что Microsoft
вообще не общается относительно этого, я действительно не понимаю, почему. Насколько я понял, LiveSDK
является старым и будет заменен на OneDrive API
, но LiveSDK
кажется гораздо проще использовать, что я не могу понять их логику... Кроме того, как недавно были обновлены (в апреле для LiveSDK
).
Итак, мой вопрос: до тех пор, пока мое приложение еще не опубликовано, следует ли перейти на OneDrive API
или сохранить LiveSDK
?
Кто-нибудь уже пробовал оба? Каковы ограничения и преимущества обоих?
На основе перспективного зрения я поеду за OneDrive API
, но моя главная проблема:
Можно ли легко войти на OneDrive API
, чем с помощью Live SDK
? (Рабочее временное решение ниже)
В настоящее время я могу войти в систему с помощью LiveSDK
с помощью одной кнопки и трех строк кода, без какого-либо ввода пользователя, где метод AuthenticateAndContinue
, используемый OneDrive API
, открывает веб-контроль и требуется ввести вручную логин и пароль.
В конце я использовал аутентификацию LiveSDK
и использовал токен доступа, предоставляемый с помощью OneDrive API
. Это не чистый подход с моей точки зрения, но мне не удалось заставить метод AuthenticateAndContinue
работать (я получаю сообщение об ошибке 404 после входа в систему).
Если у кого-то есть лучшее решение, я открыт для предложений:)
Итак, мой текущий метод следующий:
- Аутентификация с использованием API LiveSDK
- Используйте cookie сеанса и API OneDrive оттуда
Упрощенный код выглядит следующим образом:
Метод, приведенный ниже, позволяет тихо регистрироваться, только в первый раз требуется ручная проверка пользователя, позволяющая программе использовать свою учетную запись Live
.
Он не требует от пользователя пароля
var authClient = new LiveAuthClient();
var authResult = await authClient.LoginAsync(new string[] {
"wl.signin", "onedrive.readwrite", "onedrive.appfolder"});
if (authResult.Session == null)
throw new InvalidOperationException("You need to sign in and give consent to the app.");
var Connection = new ODConnection("https://api.onedrive.com/v1.0",
new MicrosoftAccountAuthenticationInfo() { TokenType = "Bearer",
AccessToken = odArgs.Session.AccessToken });
Это не так чисто, как хотелось бы (используя 2 разных SDK), но он работает:)