1

이 자습서의 내용은 Using OAuth 2.0 for Server to Server Applications입니다. 서비스 계정을 사용하여 Gmail API에 연결하려고합니다.서버 응용 프로그램에 대한 Gmail API 서버 (잘못된 요청 오류)

이 같은 외모와 끝까지 코드 :이 코드를 실행하면

from oauth2client.service_account import ServiceAccountCredentials 
from httplib2 import Http 
from apiclient.discovery import build 
import json 

scopes = ['https://www.googleapis.com/auth/gmail.readonly'] 

credentials = ServiceAccountCredentials.from_json_keyfile_name('******.json', scopes) 

http_auth = credentials.authorize(Http()) 
service = build('gmail', 'v1', http=http_auth) 
request = service.users().messages().list(userId='me') 
response = request.execute() 

print json.dumps(response, sort_keys=True, indent=2) 

그러나, 나는 다음과 같은 오류 얻을 :

googleapiclient.errors.HttpError:https://www.googleapis.com/gmail/v1/users/me/messages?alt=json returned "Bad Request">

누군가가 나를 도울 수

이해를 경우이 오류 오는거야?

답변

0

서비스 계정을 더미 사용자로 생각하십시오. Google 드라이브 계정에 Google 캘린더 계정이 있습니다. 내 지식에 미치지 못하는 것은 Gmail 계정이 있다는 것입니다.

일반적으로 서비스 계정을 사용하여 데이터를 요청할 때 서비스 계정에 해당 데이터에 대한 액세스 권한을 수동으로 부여해야합니다. Google 드라이브의 경우 서비스 계정으로 폴더를 공유하여 Google 드라이브에 액세스 할 수 있습니다. (드라이브 계정에 업로드 할 수 있지만이 질문의 범위를 벗어남)

다른 사용자에게 Gmail 계정에 대한 액세스 권한을 부여 할 방법이 없으므로 일반 사용자와 서비스 계정을 함께 사용할 방법이 없습니다. Gmail 계정.

참고 : 이것이 일반 사용자 Gmail 계정이 아니고 실제로 Google 도메인을 기반으로하는 계정 인 경우 관리 섹션을 통해 도메인의 다른 사용자의 모든 이메일에 서비스 계정 액세스 권한을 부여 할 수 있습니다.

다른 방법으로 Oauth2를 사용하여 Gmail에 액세스해야합니다.

관련 문제