我已經做了類似的事情,我使用用戶的OneDrive備份和存儲數據(我的數據以序列化對象的形式存儲在文件中)。我肯定會建議從Nuget獲取OneDrive SDK - 它會讓您的生活更輕鬆不必進行自己的REST調用。從SDK然後你可以這樣做:
var oneDriveClient = OneDriveClientExtensions.GetUniversalClient(new[] { "wl.signin", "onedrive.readwrite" })
await oneDriveClient.AuthenticateAsync();
這將使用在窗口的單點登錄與OneDrive認證 - 即不提示用戶輸入用戶名和密碼,它只是驗證使用Microsoft帳戶的用戶登錄進入Windows。當您的應用首次執行此操作時,系統將提示用戶確認他們很高興您的應用訪問其OneDrive。如果他們確認,他們將不會再看到彈出窗口,您的應用程序將立即進行身份驗證。
如果你想提示用戶輸入用戶名和密碼 - 或許他們可以使用不同的帳戶(如果他們願意) - 那麼我相信你可以像上面那樣做,但使用OneDriveClientExtentions.GetClientUsingWebAuthenticationBroker()來代替。我從來沒有嘗試過,但我認爲它會顯示您所指的登錄框。
要使用OneDrive SDK,您需要在dev.onedrive.com上使用OneDrive註冊您的應用程序,並且您需要將應用程序與Windows應用商店相關聯。
我建議您通過github.com/OneDrive/onedrive-sdk-csharp上的Getting Started文檔工作 - 這就是我讓代碼啓動並運行的方式。
我不完全確定你在嘗試實現關於用戶信息自動同步的操作 - 你是簡單地嘗試訪問用戶的OneDrive來存儲應用程序數據,還是你正在嘗試做其他事情? 如果你想訪問用戶的OneDrive,你可以在這裏找到信息:dev.onedrive.com 還有ac#SDK,你可以在這裏找到:github.com/onedrive/onedrive-sdk-csharp –
謝謝爲答覆。你有沒有使用App Store中的Wunderlist等應用程序?當您第一次啓動它時,系統會要求您登錄到您的Microsoft帳戶(或其他帳戶),以便您的所有任務和列表都與雲同步。這與我期望的操作類似。我的應用程序使用一個本地的SQLite數據庫,用戶注意到這些數據被保存。我希望他們登錄,以便將這些信息同步到雲中。 OneDrive似乎是從這裏開始的好地方。 – JonathanR33D
噢,它也類似於微軟用OneNote做的事情:你登錄到你的微軟賬戶一次,然後從你的所有筆記中保存到雲端(OneDrive)。 – JonathanR33D