【发布时间】:2016-02-04 12:38:10
【问题描述】:
一点背景
我正在开发一个Installed Application 项目,该项目可能为每个用户处理很多 Google API 及其范围。我遇到的一个major issue 是当用户选择大量范围进行身份验证时,它们在URL 中作为参数提供并被切断。例如,url 可能会这样终止(为了便于阅读而换行):
...%20https://www.googleapis.com/auth/admin.directory.userschema.
readonly%20https://www.googleapis.com/auth/admin.reports.audit.readon
ly%20https://www.googleapis.com/auth/admin.rep
这是因为我希望我的用户只需要验证一次,但我意识到他们使用的每个 API 都必须验证一次并不会太糟糕。所以我把它拆了,但后来发现再次验证后它会覆盖他们的访问权限。所以,我查看了文档中提到的Incremental Authorization,却发现no it won't work 代表Installed Apps,显然no intention 可以这样做:
我认为这里的问题是您使用的是已安装的应用程序 OAuth2 流程,这与文档不支持 include_granted_scopes 参数相反。
好的,所以在这一点上,听起来我有两个选择。第一个和obvious option是为每个API维护一个单独的令牌。但是,在我承诺这条路线之前,我研究了基于 Python 的Google Apps Manager 如何处理它,因为在进行身份验证时我没有看到 URL 中的任何范围,所以我假设它是作为 POST 正文发送的。
主要问题
对已安装的应用程序使用Google API Client Library for .NET,是否可以在不提供范围作为 URL 参数的情况下进行身份验证?我尝试使用 PowerShell 和 Invoke-RestMethod 来尝试让 POST 请求之类的东西正常工作,但没有任何运气。
【问题讨论】:
标签: .net google-admin-sdk google-api-dotnet-client google-oauth