rustic-rs / rustic

rustic - fast, encrypted, and deduplicated backups powered by Rust
https://rustic.cli.rs
Apache License 2.0
1.94k stars 70 forks source link

Document how to acquire OneDrive's `access_token` or at least refer to useful information #1320

Open simonsan opened 4 months ago

simonsan commented 4 months ago

Relevant information from openDAL side:

Cross-posting relevant replies from imWildCat #2129 (comment)

To get a working access_token for OneDrive, we can leverage https://crates.io/crates/graph-rs-sdk, especially its demo: https://github.com/sreeise/graph-rs-sdk/tree/master/examples/oauth

From #2129 (comment)

If you'd like to check some tutorials, I did find a quick for you: https://www.youtube.com/watch?v=NljQx11YqNY In general, OAuth flows for these big techs are pretty complex, sometimes replying on their own SDKs by default. I was working in MSFT. So I knew this very well. For example, if you'd like to use Graph API on iOS/macOS, you might want https://github.com/AzureAD/azure-activedirectory-library-for-objc Why this flow is always complicated? Because they must respect users' privacy and also data compliance, like GDPR. So it is always required something like "User Consent". The goal of OpenDAL is just a light-weight wrapper of some data uploading / downloading apis. So this lib is not depending on any of these first-party SDKs provided by the service companies. In my own company, I write these logic into Rust directly, referring to the sample code link I shared above. You'd better check them out before being surprised here. This flow would be easier for you if you write them in Rust for all the other big ones, like Google and/or Dropbox.

Ref: https://github.com/rustic-rs/rustic/issues/1161 https://github.com/apache/opendal/issues/4715

intgr commented 4 months ago

FWIW the current Rustic release 0.7.0 has OpenDAL OneDrive support disabled too, so documentation is misleading. I had to manually edit Cargo.toml and rebuild to enable it.

Ref: https://github.com/rustic-rs/rustic/issues/1161#issuecomment-2155365265

simonsan commented 3 weeks ago

@intgr Would you be able to provide some information about the onedrive config you are using and pull request it against this directory: https://github.com/rustic-rs/rustic/tree/main/config/services

Would be a nice addition :)