2017-03-23 7 views
1

내 작업은 Google 드라이브 API (PyDrive module의 도움으로)에 연결하고 일부 파일을 다운로드하는 것입니다. 어떻게 든 로컬 컴퓨터에서이 작업을 수행 할 수있었습니다. Google Console에 "앱"을 등록하고 client_secret.json을 다운로드하고 스크립트를 실행하고 인증 창이 튀어 나왔습니다. 내 Google 계정으로 로그인했는데 드라이브에 액세스 할 수있었습니다. 모든 것이 괜찮아.Python : Google 드라이브 인증

이제 서버에서 내 스크립트를 사용하고 싶습니다. 기본적으로 그 방법을 알지 못합니다. 내 업체에 지원 티켓을 제출하고 그들의 대답했다 : #authJson이 whoevers 드라이브 - 당신이 원하는 '대'의 결과는

{ 
"#authJson": "{"access_token":"XXX","token_type":"Bearer","expires_in":3600,"refresh_token":"YYY","created":1457455916}", 
    "#appKey": "key", 
    "#appSecret": "secret" 
} 

을 :


당신은이를 얻을 필요 액세스 권한이 있으며 및 #appKey a #appSecret은 oauth에서 온 것입니다.


나는 이것들을 얼마나 정확하게 얻을 수 있을지 모르겠다. client_secret.json을 다운로드하는 방법을 알고 있습니다. 그래서 문제는 이것들을 얻는 방법입니다. 나는 올바른 길을 가고 있습니까? 또는 다른 접근법이 필요합니다.

이상적인 최종 상태는 앱에 전달할 수있는 Google 드라이브 (예 : 문자열 매개 변수)에 영구적 인 access_token 일종의 일 것입니다. 그런 다음 앱이 내 드라이브에 연결되어 원하는 파일을 다운로드합니다.

답변

3

편집을 서비스 계정을 체크 아웃 드라이브 계정에 액세스 할 경우 : 사전 허가 서버 응용 프로그램에 대한 편집을 참조하십시오.

찾고있는 것은 PyDrive의 CommandLineAuth()입니다.

코드는 다음과 같이 보일 것이다 : 서버에서 스크립트를 실행하면

from pydrive.auth import GoogleAuth 
from pydrive.drive import GoogleDrive 


ga = GoogleAuth() 
ga.CommandLineAuth() # This line in your code currently calls LocalWebserverAuth() 
drive = GoogleDrive(self.ga) 
# etc. 

, 그것은 해당 지역의 브라우저에 링크를 복사 - 붙여 넣기하도록 요청합니다. 특정 계정으로 로그인하면 겉으로보기에 임의의 문자 및 숫자 문자열이 제공됩니다. 그 문자열을 콘솔에 붙여 넣으면 좋을 것입니다.

스크립트를 실행할 때마다이 작업을 수행하고 싶지 않으므로 settings.yaml 파일을 프로젝트에 추가하면 로그인 자격 증명을 저장할 수 있습니다. 설정 방법에 대한 자세한 내용은 docs에서 확인할 수 있습니다.


편집 :는 더 인증없이 서버에 PyDrive 스크립트를 배포하려는 경우, 당신은 할 수있다 :

  1. 다운로드 client_secret_xxxxx.json
  2. 이 프로젝트에 settings.yaml 파일을 추가, 참조 이 template. save_credentials_file:이 설정되었는지 확인하십시오 (예 : creds.json
  3. client_secret_xxxx.json에서 과 같은 정보를 settings.yaml 파일로 복사하십시오.
  4. 개발 컴퓨터의 인증 프로세스를 거쳐 이제 자격 증명이 포함 된 폴더에 추가 파일이 있어야합니다 (예 : creds.json)
  5. 원본 파일 (a), 원본 스크립트 settings.yaml 파일 및 c) 생성 된 creds.json 파일을 원격 시스템에 저장합니다. 상대 경로가 변경되지 않도록하십시오.
  6. 이익?

참고 : Google 드라이브 API에는 API 호출 제한이 첨부되어있어 100 초 이내에 100 회 이상의 호출을 방지합니다.

+0

안녕하세요, Robin, 답변 해 주셔서 감사합니다. 질문 하나 더 드릴까요? 이 로그인 자격 증명을 얻을 수있는 곳 ('settings.json'에 저장됩니다)? – mLC

+0

안녕하세요, @mLC, Google Cloud Console에서 client_secret_xxxxxxx.json 파일 (일반적으로 PyDrive에 사용되는 경우 client_secrets.json으로 이름이 변경됨)을 다운로드하셨습니까? 이것은'settings.yaml' 파일에 필요한 모든 정보가 담긴 json 형식의 파일입니다. [this file] (https://github.com/googledrive/PyDrive/blob/master/pydrive/test/settings/test2.yaml)을 템플릿으로 사용할 수 있습니다. 또한 대답에서'settings.json'이라고 불렀다는 사실을 알게되었습니다. 실제로'settings.yaml'이라고합니다. –

+0

나는'client_secret.json'을 가지고있다. :)하지만 나는 그 명령 행에 접근 할 수 없기 때문에 서버로부터 권한을 부여받을 수 없다는 것을 여기서 짐작할 수있다. 나는 그 과정이 다음과 같이 될 것이다 : 1) 나는 나의 로컬 컴퓨터에서 권한을 부여 할 것이다. 2) 나는 나의 인증 정보로 어떤 파일을 얻을 것이다. 3) 나는이 인증 정보를'settings' 파일에 저장할 것이다. 4) 나는이 설정 파일을 업로드 할 것이다. 서버에 5) 더 이상의 인증이 필요하지 않습니다. – mLC

0

누군가의 개인 드라이브 계정에 액세스하려면 인증을 받아야합니다. 웹 브라우저를 통해 액세스 권한을 부여하면 처음에는 위의 새로 고침 토큰을 저장해야합니다. 새로 고침 토큰을 사용하면 서버 양면 스크립트에서 필요할 때마다 데이터에 액세스 할 수 있습니다. 참조 : Python Quickstart

당신은 단지 당신이 개인적 다음 제어 서버 응용 프로그램을 서버에 대한 OAuth는 2.0을 사용하여