Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试授权ruby中的服务器到服务器类型应用程序访问Google日历时授予无效_Ruby_Sinatra_Google Api_Google Calendar Api - Fatal编程技术网

尝试授权ruby中的服务器到服务器类型应用程序访问Google日历时授予无效

尝试授权ruby中的服务器到服务器类型应用程序访问Google日历时授予无效,ruby,sinatra,google-api,google-calendar-api,Ruby,Sinatra,Google Api,Google Calendar Api,我正在尝试为自己创建一个直接连接到日历的应用程序。。。但我从来不想参与重新认证。我只想对身份验证进行一次编码,并完成它 认证代码如下所示: key = Google::APIClient::PKCS12.load_key(SERVICE_ACCOUNT_PKCS12_FILE_PATH, PASSWORD) asserter = Google::APIClient::JWTAsserter.new( SERVICE_ACCOUNT_EMAIL, 'https://www.goog

我正在尝试为自己创建一个直接连接到日历的应用程序。。。但我从来不想参与重新认证。我只想对身份验证进行一次编码,并完成它

认证代码如下所示:

key = Google::APIClient::PKCS12.load_key(SERVICE_ACCOUNT_PKCS12_FILE_PATH, PASSWORD)
asserter = Google::APIClient::JWTAsserter.new(
    SERVICE_ACCOUNT_EMAIL,
    'https://www.googleapis.com/auth/calendar', 
    key)
@client = Google::APIClient.new
@client.authorization = asserter.authorize#(SERVICE_ACCOUNT_EMAIL)
@client
我的
服务\u帐户\u…PKCS。
文件与我的Sinatra应用程序一起位于目录的根目录中。
我已经在我的gmail帐户上启用了谷歌日历API

我一直在研究一种身份验证方法: (在授权下,它谈论服务器到服务器的通信)

问题可能是什么?为什么我会犯这个错误特别是因为我几乎是从google gem的网站上复制代码的

更新:

我们发现:

他说我应该这样做: “请确保在请求中指定access\u type=offline。”


我该如何处理红宝石宝石呢?在不完全重新执行http请求的情况下?

这里有一个工作代码,除了最后一行之外,它与此类似,应该包含实际拥有日历的用户(您)的电子邮件。我假定服务帐户电子邮件不是您的电子邮件

client_asserter = Google::APIClient::JWTAsserter.new(
    config['client_email'],
    PLUS_LOGIN_SCOPE,
    key
)
$client.authorization = client_asserter.authorize(config['user_email'])
此外,请确保您将服务帐户正确装箱。我使用了这个指南:,它是用于域API的,但是第一部分应该是相同的

另外,您不需要另一个身份验证作用域吗


下面是一个完整的示例(ruby),我需要为自己工作:

我在连接到驱动器时遇到了类似的问题。今天早上刚开始。你达成决议了吗?运气好吗?有同样的问题
client_asserter = Google::APIClient::JWTAsserter.new(
    config['client_email'],
    PLUS_LOGIN_SCOPE,
    key
)
$client.authorization = client_asserter.authorize(config['user_email'])