首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google产品发布问题

Google产品发布问题
EN

Stack Overflow用户
提问于 2022-01-28 07:13:26
回答 1查看 109关注 0票数 1

我正在使用FreshDesk构建一个聊天机器人,它将连接到Google,所以我

  1. 转到并创建一个项目
  2. 将google日历API服务添加到项目中
  3. 获取凭据(OAuth客户端ID)
  4. 配置OAuth同意屏幕,添加敏感范围(编辑、查看、删除)
  5. 开发我自己的程序,这将提供API的预订房间使用谷歌日历API。

这里仍然很好,在我的本地电脑里一切都很好。直到我试图部署到AWS上的服务器。

我遇到的问题是:

根据Google日历API文档(https://developers.google.com/calendar/api/quickstart/dotnet)中的示例代码

当我第一次通过邮递员在本地计算机上触发API时,Chrome将自动弹出并显示同意屏幕,并在屏幕上单击“确认”后生成一个文件"Google.Apis.Auth.OAuth2.Responses.TokenResponse-user“。

但是,在我部署到AWS服务器后,同意屏幕没有弹出。我需要将本地计算机中的Google.Apis.Auth.OAuth2.Responses.TokenResponse-user复制到AWS服务器。这样做合适吗?文件就会不知怎的消失。如果没有这个文件,我所有的API都被破坏了。将我的程序部署到生产中的最佳方法是什么?

EN

回答 1

Stack Overflow用户

发布于 2022-01-31 07:44:20

你在这里会有一些问题。首先,GoogleWebAuthorizationBroker.AuthorizeAsync是为已安装的应用程序设计的。它在它运行的机器上打开同意屏幕。因此,如果它在AWS上运行,那么它将尝试打开AWS上的同意屏幕,这意味着用户无法看到同意屏幕。方法是一次运行您的代码,然后Google.Apis.Auth.OAuth2.Responses.TokenResponse-user将您的凭据存储在您的计算机上的FileDatastore文件中。

代码语言:javascript
复制
 credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                GoogleClientSecrets.Load(stream).Secrets,
                Scopes,
                "user",
                CancellationToken.None,
                new FileDataStore(credPath, true)).Result;

然后,您的代码将从Google.Apis.Auth.OAuth2.Responses.TokenResponse-user读取,并在需要时加载刷新令牌。

您将遇到的问题是,如果刷新令牌过期,您的代码将无法再次请求授权它。刷新项可以过期,但在应用程序被设置为在中执行之后,这是非常罕见的。

服务帐户

您可能需要考虑使用服务帐户,如果使用服务帐户,则需要google工作区帐户来设置域范围的委托,并且服务帐户只能访问工作区域中的日历。

服务帐户的好处是,它们是通过域范围的委托预先授权的,这意味着您不需要处理刷新令牌、验证应用程序或同意屏幕。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70890047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档