본문 바로가기

개발하자

OAuth Client ID [Python] 대신 API Key를 사용하여 Python으로 Google 시트 읽기

반응형

OAuth Client ID [Python] 대신 API Key를 사용하여 Python으로 Google 시트 읽기

구글 시트를 읽고 쓰는 데 필요한 자격 증명을 생성하기 위해 OAuth Client ID를 사용하는 방법에 대한 몇 가지 유용한 기사가 있지만, 나는 그러한 맥락에서 대체 API 키(토큰)를 어떻게 사용하는지 이해할 수 없었다.

나는 맹목적으로 토큰 문자열을 에 전달하려고 시도했지만, 놀랍지 않게도 오류를 받았다:

조언을 해주셔서 미리 감사드립니다




모든 사람은 OAuth를 사용하여 인증을 받아야 합니다. 시작하려면 을 참조하십시오.




우선 구글 시트 api는 api 키를 사용할 수 있다. API 키와 OAuth 2.0의 주요 차이점은 API 키가 공개 데이터에만 액세스할 수 있다는 것입니다.

REST http 요청의 경우 쿼리 매개 변수 키=를 추가할 수 있습니다모든 요청 URL에 대한 PIKey.

python의 경우 Google-api-python-client 라이브러리의 참조를 참조하십시오. build() 함수에는 developerKey라는 매개 변수가 있습니다. 나는 공식 퀵스타트에서 수정된 간단한 예시를 작성했다.

#!/usr/bin/env python

from __future__ import print_function
import httplib2
import os

from apiclient import discovery


def main(key=None):
    discoveryUrl ='https://sheets.googleapis.com/$discovery/rest?version=v4'
    service = discovery.build(
        'sheets',
        'v4',
        http=httplib2.Http(),
        discoveryServiceUrl=discoveryUrl,
        developerKey=key)

    spreadsheetId = '1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms'
    rangeName = 'Class Data!A2:E'
    result = service.spreadsheets().values().get(
        spreadsheetId=spreadsheetId, range=rangeName).execute()
    values = result.get('values', [])

    if not values:
        print('No data found.')
    else:
        print('Name, Major:')
        for row in values:
            # Print columns A and E, which correspond to indices 0 and 4.
            print('%s, %s' % (row[0], row[4]))


if __name__ == '__main__':
    from sys import argv

    if len(argv) == 2:
        main(key=argv[1])
    else:
        main()

유용한 공식 링크입니다.

그러나 공식 라이브러리에 기반한 가장 일반적인 세 번째 라이브러리는 developerKey 매개 변수를 노출하지 않습니다.


반응형