问题描述
我们正在使用Gmail .NET SDK实施Gmail发送ASP.NET Web应用程序。
为此,我们需要以下所有范围“ email”,“ profile”,“ openid”, https://www.googleapis.com/auth/gmail.send"由用户授予我们。
但是,用户可以在同意屏幕上取消选中我们不接受的“代表您发送电子邮件”复选框,请参见以下内容:
我们已经看到很多示例,其中在Google同意屏幕上没有启用的复选框。因此,我们正在努力找出如何在我们的应用中隐藏/禁用复选框,请您指教?
可能是因为我们的应用程序尚未得到验证,但是我不确定这是否是原因。
谢谢, 叶夫根尼。
解决方法
答案:
这些复选框是由于新的粒度帐户权限系统的推出而导致的,它们是完全正常的,无法关闭。
更多信息:
经过一番挖掘,我从2018年发现this Google Developers blog post,其中讨论了在新的权限系统中,用户将能够分别授予或拒绝权限。
来自博客文章:
在接下来的几个月中,我们将开始对API基础架构进行改进。我们将在其自己的对话框中显示应用一次请求的每个权限,而不是在单个对话框中显示所有权限*。用户可以分别授予或拒绝权限。
*我们不同的登录范围(配置文件,电子邮件和openid都在同一同意书中合并使用,不需要分别请求。
即使在撰写此答案之时,自宣布以来已经过去了26个月,看来这仍处于推出阶段。
为更改做准备:
以下是Google提供的有关如何准备对OAuth和API的Google帐户权限系统进行更改的准则:
- 查看Google API Services: User Data Policy,并确保您在关注它们。
- 在进行API调用之前,请检查用户是否已授予您的应用程序权限。这将帮助您避免权限不足错误,否则可能导致应用程序意外错误和糟糕的用户体验。请参阅以下平台上的文档,以了解有关此内容的更多信息:
- 仅在需要权限时请求权限。您将可以在何时请求每个权限的阶段,我们建议在上下文中进行此操作时应谨慎考虑。当用户可能是第一次使用您的应用并且不熟悉该应用的功能时,应避免在登录时要求多个作用域。将多个范围的请求捆绑在一起,使用户很难理解您的应用为何需要该权限,并可能发出警报并阻止他们进一步使用您的应用。
- 在请求访问权限之前提供理由。清楚地说明您为什么需要访问,如何处理用户数据以及他们将从提供访问中受益的方式。我们的研究表明,这些解释可以提高用户的信任度和参与度。
您可以阅读前面链接的博客文章,以获取有关更改的完整信息。
我希望这对您有帮助!
参考文献:
- Google Developers Blog: More granular Google Account permissions with Google OAuth and APIs
- Google API Services User Data Policy | Google Developers
- GoogleSignIn | Google APIs for Android | Google Developers
- Google Sign-In JavaScript client reference
- Requesting additional scopes after sign-in | Google Sign-In for iOS
Google同意屏幕是由Google授权服务器创建的。您无法对此进行控制。除了顶部显示的名称和电子邮件地址之外。
当您将范围添加到请求中时,Google会要求用户提供适当的权限,并提供接受或不接受的选项。多年来,我对该屏幕进行了很多更改,我怀疑您在网上看到的任何示例都可能过时。