드라이브 서비스 계정을 인스턴스화하기위한 샘플 코드를 얻는 데 문제가 있습니다. API 콘솔에 서비스 계정을 설정하고 'https://www.googleapis.com/auth/drive'의 범위를 포함 시켰지만이를 실행하면 "인증에 실패했습니다. 서버 메시지 : (Signet :: AuthorizationError)"오류가 발생합니다.Ruby의 Google Apps API 및 서비스 계정 관련 문제
이상하게도 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>")
흥미 롭군요. 마침내 제 코드로 작업하게되었습니다. 나는 어떤 단계에서 오타가 있었음에 틀림 없다. 그러나 나는 모든 것을 세 번 점검하겠다고 맹세한다. – JRQ
이상합니다. [여기 Google 문서] (https://developers.google.com/drive/web/delegation)에 표시된 루비 예제는 OP와 비슷합니다. Signet 방법에 대한 문서가 있습니까? – mmcrae
신난다,이 대답은 여기에서 유용한 요청을 요청했다! https://github.com/northworld/google_calendar/pull/95 –