Open intgr opened 3 weeks ago
Cross-posting relevant replies from @imWildCat https://github.com/apache/opendal/pull/2129#issue-1684266501
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 https://github.com/apache/opendal/pull/2129#issuecomment-2156947182
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.
Thanks a lot for raising up an issue. I'm going to setup the integration tests for one drive. Maybe I can finish the documentation at the same time.
And you are welcomed to provide a minimum PR to improve the existing docs a bit 🥰
For background: the Rustic backup tool uses OpenDAL for cloud storage integration. The documentation is lacking on both sides. But I managed to reverse engineer that it expects the user to configure OpenDAL
root
&access_token
(https://opendal.apache.org/docs/rust/opendal/services/struct.Onedrive.html#configuration) for OneDrive in a configuration file.But there is no documentation on either side, what process needs to be performed to get an access token issued. Is this even something that a user should be exposed to? Or is it the application author's responsibility to provide a mechanism for requesting the access token?
But at the bare minimum, OpenDAL's documentation should document the expected format of this token (e.g. JWT token?) and reference relevant parts of Microsoft Graph API, and perhaps suggest a tool or library that can be used to request one.
Related discussion: https://github.com/apache/opendal/pull/2129#issuecomment-2156889316