gpt4 book ai didi

ruby-on-rails - 在 Rails 应用程序中集成 Google 日历

转载 作者:数据小太阳 更新时间:2023-10-29 08:04:43 25 4
gpt4 key购买 nike

我的 Rails 应用程序将允许创建约会。然后应将这些约会导出到每个用户的谷歌日历。

我已经安装了 omniauth-google-oauth2,并为来自 Google 的 API 控制台的 Web 应用程序。

我可以使用 omniauth 对用户进行身份验证,并将 access_tokenrefresh_tokenexpires_at 日期存储到我的数据库中, 供以后使用。

当需要将事件导出到每个用户的谷歌日历(在后台作业中完成)时,我收到无效凭据的响应。

我做错了什么?

注意:我在oauth中授权后可以立即访问用户日历,但过一段时间后就不能访问了。

代码:

session Controller

/auth/:provider/callback 路由到此方法:

auth = request.env["omniauth.auth"]
# Save token of user
current_user.google_auth_token = auth["credentials"]["token"]
current_user.google_auth_refresh_token = auth["credentials"]["refresh_token"]
current_user.google_auth_expires_at = Time.at auth["credentials"]["expires_at"]
current_user.save

omniauth 配置

Rails.application.config.middleware.use OmniAuth::Builder do
provider :google_oauth2, ENV["GOOGLE_CLIENT_ID"], ENV["GOOGLE_CLIENT_SECRET"], {
access_type: 'offline',
scope: 'userinfo.email,calendar'
}
end

获得创建用户日历的权​​限

client = Google::APIClient.new
client.authorization.refresh_token = app.carer.google_auth_refresh_token
client.authorization.access_token = app.carer.google_auth_token
if client.authorization.refresh_token && client.authorization.expired?
client.authorization.fetch_access_token!
end
service = client.discovered_api('calendar', 'v3')
result = client.execute(:api_method => service.calendar_list.list)
# results in auth error, Invalid Credentials ...

最佳答案

看来我必须从 Google API 控制台获取已安装应用程序的 client_ID 和 client_secret。仅此一项就解决了问题。

关于ruby-on-rails - 在 Rails 应用程序中集成 Google 日历,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17118419/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com