google-apis-rs icon indicating copy to clipboard operation
google-apis-rs copied to clipboard

Default Scope for UserMessageGetCall

Open burkematthew opened this issue 1 year ago • 1 comments

Hi there!

First, thanks for providing such a great crate! This is proving to be very useful for our team.

Second, in an attempt at implementing a basic call to the Gmail API for a specific message, we are using the messages_get function, which returns type UserMessageGetCall. The default scope of this type is Scope::AddonCurrentMessageReadonly, which equates to the Gmail scope of https://www.googleapis.com/auth/gmail.addons.current.message.readonly. However, the Gmail API documentation indicates that the required scope for simply reading a message is https://www.googleapis.com/auth/gmail.readonly, which is defined as Scope::Readonly.

I've gotten around this by adding the scope manually, but I would think that the default scope should be Scope::Readonly instead of Scope::AddonCurrentMessageReadonly?

Thanks!

burkematthew avatar Apr 19 '23 17:04 burkematthew

Thanks for letting me know.

As the APIs are autogenerated, most of the information about which scopes to use comes from the API description. I think there are also heuristics which try to determine a scope based on method names, but I don't remember details.

That said, the generator also supports overrides on a per-API basis, which are specified as JSON and would allow to amend the existing declaration (see etc/api/youtube/v3/youtube-api_overrides.yaml as example). However, what's needed to change default scopes on a per-call basis might not be implemented yet, and contributions to make that possible would definitely be welcome.

In the meantime, setting the scope manually should do the trick.

Byron avatar Apr 19 '23 18:04 Byron