Ruby on rails 4 在Heroku临时帐户上未正确检索Google身份验证凭据

Ruby on rails 4 在Heroku临时帐户上未正确检索Google身份验证凭据,ruby-on-rails-4,heroku,google-calendar-api,google-authentication,Ruby On Rails 4,Heroku,Google Calendar Api,Google Authentication,我们选择使用env vars来存储所需的信息,而不是在服务器上存储凭据文件: GOOGLE_CLIENT_ID GOOGLE_CLIENT_EMAIL GOOGLE_ACCOUNT_TYPE GOOGLE_PRIVATE_KEY 我们正在获得日历服务的授权,如下所示: scopes = ["https://www.googleapis.com/auth/calendar"] auth = ::Google::Auth.new_application_credentials(scopes) se

我们选择使用env vars来存储所需的信息,而不是在服务器上存储凭据文件:

GOOGLE_CLIENT_ID
GOOGLE_CLIENT_EMAIL
GOOGLE_ACCOUNT_TYPE
GOOGLE_PRIVATE_KEY
我们正在获得
日历服务的授权,如下所示:

scopes = ["https://www.googleapis.com/auth/calendar"]
auth = ::Google::Auth.new_application_credentials(scopes)
service = ::Google::Apis::CalendarV3::CalendarService.new
service.authorization = auth
service.authorization.fetch_access_token!
该过程的每个部分都在本地工作—授权、获取访问令牌、与API交互等。当我们部署到Heroku上的登台环境时,我们无法克服以下错误:

无法读取GOOGLE_应用程序_凭据指定的凭据文件:PUB-key或PRIV-key:nested asn1错误

我在测试中看到了这个错误,所以我知道它可能与丢失的凭据文件(如错误所示)或无效的id、私钥或电子邮件组合有关(因为我不小心用无效值替换了私钥)。在这种情况下,错误消息是相同的


我们已经验证了所有变量都与本地使用的凭据匹配-我缺少什么?

确保您正确设置了GOOGLE_PRIVATE_KEY变量

在Heroku上设置需要运行的多行配置变量:


heroku config:add GOOGLE_PRIVATE_KEY=“$(cat PRIVATE_KEY_file)”
将密钥存储在新文件中并使用
cat
的替代方法是使用
printf

heroku config:add GOOGLE_PRIVATE_KEY="$(printf "-----BEGIN PRIVATE KEY.....")"

太好了,谢谢!我无法理解复制/粘贴到Heroku仪表板配置中,或者通过“Heroku配置:add VAR=“contents of string”进行设置,与读取文件内容之间是否有区别。