我们选择使用环境变量来存储所需的信息,而不是在服务器上存储凭据文件:
GOOGLE_CLIENT_ID
GOOGLE_CLIENT_EMAIL
GOOGLE_ACCOUNT_TYPE
GOOGLE_PRIVATE_KEY
我们正在获取 CalendarService
的授权,如下所示:
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!
该过程的每个部分都在本地工作 - 授权、获取访问 token 、与 API 交互等。当我们部署到 Heroku 上的临时环境时,我们无法克服以下错误:
无法读取 GOOGLE_APPLICATION_CREDENTIALS 指定的凭据文件:PUB key 和 PRIV key 都不是:嵌套 asn1 错误
我在测试中看到了这个错误,所以我知道它可能与缺少的凭据文件(如错误所示)或相关,或者与无效的私有(private) ID 相关 key 或电子邮件组合(因为我不小心用无效值替换了私钥)。在这种情况下,错误消息是相同的。
我们已经验证所有变量都与本地使用的凭据匹配 - 我缺少什么?
最佳答案
确保您正确设置 GOOGLE_PRIVATE_KEY 变量。
在 Heroku 上设置多行配置变量,您需要运行:
heroku config:add GOOGLE_PRIVATE_KEY="$(cat private_key_file)"
关于ruby-on-rails-4 - 在 Heroku 临时帐户上未正确检索 Google Auth 凭据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36201889/