问题标签 [google-auth-library-ruby]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
352 浏览

ruby - 使用 lib google-drive-ruby 获取刷新令牌

来自文章:https ://github.com/gimite/google-drive-ruby/blob/master/doc/authorization.md

代码:

然后

如果您想在之后恢复会话,您可以在 credentials.fetch_access_token 之后存储 credentials.refresh_token!

但是在credentials.fetch_access_token之后!credentials.refresh_token 为零

我怎样才能获得 refresh_token?还是将凭据保存到数据库中以备下次使用?

0 投票
1 回答
1445 浏览

ruby - 将域范围委派与 Google API 一起使用时出现未经授权的客户端错误

我们正在使用具有域范围授权的 Google API Ruby 客户端来更新用户的联系人,解析电子邮件以将它们与我们的数据库配对等。在 4 月 1 日之前一切正常,但是,从那时起我们得到了unauthorized_client错误响应。

我已经尝试了什么?

我已经尝试更新google-api-ruby-clientgoogleauth宝石到最新版本。没有改变。

我还尝试(两次)生成新的服务帐户,为 DWD 启用它,并使用服务帐户的客户端 ID 在 G Suite 管理控制台中添加所需的范围。在管理控制台中添加范围后,我等待了 24 小时,但没有任何改变。

请注意,过去使用相同的设置一切正常。

最少的测试代码

这是引发错误的最小代码。

据我所知,我们正在根据可用的文档做所有事情。请问有人有什么建议吗?

更新

我还尝试在同一组织下创建一个新的 Google Cloud Platform 项目,只添加了服务帐户,但一切都保持不变。

0 投票
2 回答
138 浏览

google-api-ruby-client - 尝试访问 GSuite 管理员帐户的用户会给出“401 - 需要登录”

我已经设置了一个新项目来访问我的 GSuite 帐户用户。当我运行我的代码时,它会给出 401 - '需要登录'。

我已向具有所需范围的帐户授予“域范围权限”。

我正在使用的代码是:

该项目是在我的个人谷歌开发者帐户上设置的。

任何想法为什么会发生这种情况以及我该如何解决?

0 投票
1 回答
375 浏览

google-cloud-platform - 使用 google-auth-library-ruby 和 google-api-ruby-client 的 3-legged OAuth 和一次性代码流

快速概述:我有一个 ruby​​ 应用程序,它每晚运行并使用用户的谷歌日历做一些事情。用户已经通过单独的 react 应用程序授予访问权限。我无法让 ruby​​ 应用程序使用来自 react 应用程序的授权代码访问用户的日历。

详细信息:我有一个 React 前端,可以使用 gapi 登录用户,然后将用户登录到 Firebase。以下是我配置 gapi obj 的方法:

这里是登录:

用户的下一步是授予应用对其日历的离线访问权限:

此时,前端具有可以传递给服务器端应用程序以交换访问和刷新令牌的授权代码。我一直无法找到一种使用用户提供的身份验证代码来调用可用范围的好方法。这就是我配置 oauth 客户端的方式:

^ 我在后端使用与前端相同的 GCP 凭据。它是一种“OAuth 2.0 客户端 ID”类型的凭证。我不确定这是否是好习惯。另外,我是否需要定义与前端相同的配置(如 access_type 和 scope)?

接下来我按照文档所说的来获取访问和刷新令牌(单击 Ruby):

在设置可以处理对用户授予范围的脱机访问的单独后端应用程序时,我是否缺少一些东西?这些库上有很多不同的信息,但我无法将其提炼成有用的东西。

更新 我发现这个页面描述了我在其他任何地方都没有找到的“一次性代码流程”,这是我浏览过的所有文档。它确实回答了我上面的一个小问题:是的,您可以使用与后端 Web 应用程序相同的客户端密码。(请参阅底部的完整示例,他们就是这样做的)。我会更多地探索它,看看是否可以解决我更大的问题。还将更新标题以包含一次性代码流。

0 投票
0 回答
82 浏览

ruby-on-rails - Ruby Google::Auth::WebUserAuthorizer 抛出未定义的 get 方法异常

下面是我正在运行的示例代码:

以上代码抛出“NoMethodError: undefined method `get'”错误

0 投票
1 回答
207 浏览

ruby - 使用 google auth gem 从 ruby​​ 客户端通过 HTTP 访问 Cloud Function

我正在尝试使用 ruby​​ googleauth gem 来验证服务帐户以对 Cloud Function 进行 HTTP 调用,但没有成功。

测试代码:

(我想知道是否应该指定audience而不是scope,但我一直无法做到这一点。)

我将 GOOGLE_APPLICATION_CREDENTIALS env var 设置为有效 GCP 服务帐户密钥文件的路径,并确保相关服务帐户列在具有Cloud Functions Invoker 角色的此 Cloud Function 的权限中。

访问失败,输出如下。