我在获取用于实例化 Drive Service Account 的示例代码时遇到了一些麻烦。我已按照指示在 API 控制台中设置了服务帐户,并包含了“ https://www.googleapis.com/auth/drive ”的范围,但运行此帐户会产生以下错误:“授权失败。服务器消息: (Signet::AuthorizationError)”。
奇怪的是,如果我省略 user_email 地址,它不会产生错误。
我的目标是能够对存储在组织驱动器上的所有文件进行审核,据我了解,使用服务帐户将是获取所有存储文件列表的方法。
我是否为此错过了服务器端的一些特殊设置?
require 'google/api_client'
## Email of the Service Account #
SERVICE_ACCOUNT_EMAIL = '<service account email>@developer.gserviceaccount.com'
## Path to the Service Account's Private Key file #
SERVICE_ACCOUNT_PKCS12_FILE_PATH = '<private key file>-privatekey.p12'
def build_client(user_email)
key = Google::APIClient::PKCS12.load_key(SERVICE_ACCOUNT_PKCS12_FILE_PATH, 'notasecret')
asserter = Google::APIClient::JWTAsserter.new(SERVICE_ACCOUNT_EMAIL, 'https://www.googleapis.com/auth/drive', key)
client = Google::APIClient.new
client.authorization = asserter.authorize(user_email)
return client
end
client = build_client("<users email address>")