当前位置: 首页 > 知识库问答 >
问题:

如何使用Google Calendar API client library for Ruby获取仅我的帐户的日历ID列表?

司空温书
2023-03-14

我正在尝试创建一个Web应用程序,该应用程序从我的谷歌日历帐户中获取数据,并将其放在使用自己的日历程序的网站上。我不想每次运行程序时都必须获得该帐户的用户权限,因为我是该帐户的用户,并且根据https://developers.google.com/api-client-library/ruby/auth/service-accounts和https://developers.google.com/identity/protocols/OAuth2,似乎唯一的方法是使用服务号。这是我的场景的理想选择吗?无论如何,我设置了一个服务号,使用我的凭据生成了JSON文件,并尝试创建返回我的日历ID列表的代码,以便我可以访问我的所有日历:

require 'google/apis/calendar_v3'
require 'googleauth'
require 'oauth'

cert_path = Gem.loaded_specs['google-api-client'].full_gem_path+'/lib/cacerts.pem'
ENV['SSL_CERT_FILE'] = cert_path

ENV['GOOGLE_APPLICATION_CREDENTIALS'] = 'C:\Users\eric\Desktop\Tripleseat Project\My Project-6006a5b60113.json'

def createServiceObject()
    service = Google::Apis::CalendarV3::CalendarService.new
    scope = ["https://www.googleapis.com/auth/calendar"]
    service.authorization = Google::Auth.get_application_default(scope)
    service.authorization.fetch_access_token!
    return service
end

service = createServiceObject()
response = service.list_calendar_lists()
puts response
puts response.items

当我从命令提示符下运行此代码时,它不会遇到任何错误,并且我确实从API得到了响应。然而,回应。即使我的谷歌日历帐户在屏幕左侧的“我的日历”菜单下清楚地列出了多个日历,并且每个日历都有多个相关事件,但“项目”字段始终为空。我猜问题是我的服务帐户与我的谷歌日历帐户没有正确关联。但是,我找不到任何说明如何将服务帐户与单个google帐户关联的文档。关于如何使用谷歌应用程序域、谷歌应用程序引擎或谷歌计算引擎访问多个用户的帐户,有很多信息,但我不想在我相对简单的Ruby程序中使用这些东西(我甚至没有使用Rails或Sinatra)。我宁愿把程序放在Heroku服务器上,在那里我已经安装了其他类似的程序。API响应会变成空的原因还有其他吗?如果API不知道从哪个帐户获取数据,它是否应该返回任何东西?

共有2个答案

龙智
2023-03-14

您不应该使用服务帐户。您应该能够使用oauth2让用户授权您的服务读取和管理他们的日历,然后保存访问令牌和刷新令牌。

东门令
2023-03-14

我发现我的问题是。我需要转到我的谷歌日历帐户并更改日历的设置,以便它可以允许我的服务帐户共享其信息。我必须单击google日历页面右上角的gear图标,转到设置,转到日历,单击共享:编辑设置,输入我的服务帐户的电子邮件地址,并将权限设置设置设置为下拉菜单上的“进行更改”选项之一。

 类似资料:
  • 我试图写这个来获取列表,我必须将ID列表作为参数传递: 我的实体是我用来查询的实体是: 但我在运行后遇到了以下异常: 有人能帮我用上面的方法获取列表吗?或者能告诉我我在这方面做错了什么。我不想使用本机,即(nativeQuery=true)使用这个。

  • 我们需要获取Office 365日历帐户中的所有日历 我们基本上对endpointhttps://graph . Microsoft . com/v 1.0/users/[log-in-user-id]/calendars进行api调用 但是当我们调用API时,它只返回10个日历(最多)!? 任何帮助/提示表示赞赏!

  • 我的问题是:不使用powershell命令是否可以获得azure active directory租户id? 我找到了这两个博客,在这个帮助下,我已经能够从PowerShell获得承租人ID和订阅ID。这是找回房客的唯一方法吗? 在Windows PowerShell中获取Windows Azure Active Directory承租人ID 对PowerShell的Windows Azure A

  • 我的主要目的是通过单个管理员访问令牌获取用户的日历。我正试图通过以下步骤获取访问令牌。 URL:https://login.microsoftonline.com/{tenentId}/oAuth2/v2.0/令牌主体client_id:client_ID作用域:https://graph.microsoft.com/.defaultclient_secret:client_secretIDgra

  • 我想获取我的贝宝账户交易历史记录。与我登录时可以导出的数据相同。 那里的所有事务都不是通过RESTAPI本身生成的。 我读了一些帖子,上面说在这种情况下不能使用,例如“事务搜索”应用编程接口(https://developer.paypal.com/docs/api/transaction-search/v1/)。 我试过了,但没能成功。 在我获得访问令牌后: 我尝试调用/v1/reporting

  • 问题内容: 我想在模板中显示current_user的图片。使用django-allauth时如何访问用户的Facebook ID? 问题答案: 对于通过社交帐户注册的每个用户,都可以使用一个实例。此模型具有的外键。请注意,用户可以将多个社交网络帐户连接到其本地帐户,因此实际上可能有多个实例可用。 你如何处理此问题取决于项目。我可以想象有人想要在本地复制个人资料图片,或者你可能希望优先选择Face