Google 未在 Heroku 暂存帐户上正确检索到身份验证凭据
Google Auth credentials not retrieved properly on Heroku staging account
我们没有在服务器上存储凭据文件,而是选择使用环境变量来存储所需的信息:
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!
流程的每个部分都在本地工作——授权、获取访问令牌、与 API 交互等。当我们部署到 Heroku 上的暂存环境时,我们无法克服以下错误:
Unable to read the credential file specified by GOOGLE_APPLICATION_CREDENTIALS: Neither PUB key nor PRIV key: nested asn1 error
我在测试中看到了这个错误,所以我知道它可能与 或者 丢失的凭据文件相关(如错误所示)OR 到无效的 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.....")"
我们没有在服务器上存储凭据文件,而是选择使用环境变量来存储所需的信息:
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!
流程的每个部分都在本地工作——授权、获取访问令牌、与 API 交互等。当我们部署到 Heroku 上的暂存环境时,我们无法克服以下错误:
Unable to read the credential file specified by GOOGLE_APPLICATION_CREDENTIALS: Neither PUB key nor PRIV key: nested asn1 error
我在测试中看到了这个错误,所以我知道它可能与 或者 丢失的凭据文件相关(如错误所示)OR 到无效的 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.....")"