Where do you specify your API key when making a request with the Google API python library?
Asked Answered
L

2

9

I am getting started looking at using the YouTube API with python yet the examples given in the documentation seem to disagree with the quickstart guide.

The quickstart guide can be found here and in it they recommend you grab some sample code from the API documentation here that will request from the API some information for the "YouTube Developers" channel. Now in the quickstart guide, they say to replace the "YOUR_API_KEY" string with your API key but as you can see from the sample code it is not there.

# -*- coding: utf-8 -*-

# Sample Python code for youtube.channels.list
# See instructions for running these code samples locally:
# https://developers.google.com/explorer-help/guides/code_samples#python

import os

import google_auth_oauthlib.flow
import googleapiclient.discovery
import googleapiclient.errors

scopes = ["https://www.googleapis.com/auth/youtube.readonly"]

def main():
    # Disable OAuthlib's HTTPS verification when running locally.
    # *DO NOT* leave this option enabled in production.
    os.environ["OAUTHLIB_INSECURE_TRANSPORT"] = "1"

    api_service_name = "youtube"
    api_version = "v3"
    client_secrets_file = "YOUR_CLIENT_SECRET_FILE.json"

    # Get credentials and create an API client
    flow = google_auth_oauthlib.flow.InstalledAppFlow.from_client_secrets_file(
        client_secrets_file, scopes)
    credentials = flow.run_console()
    youtube = googleapiclient.discovery.build(
        api_service_name, api_version, credentials=credentials)

    request = youtube.channels().list(
        part="snippet,contentDetails,statistics",
        id="UC_x5XG1OV2P6uZZ5FSM9Ttw"
    )
    response = request.execute()

    print(response)

if __name__ == "__main__":
    main()

The "YOUR_CLIENT_SECRET_FILE" string i believe is only for requests that require user authentication, which should not be the case with this type of request.

So where are you supposed to supply the API key? Is the guide out of date?

All help is much appreciated!

Laborious answered 16/8, 2019 at 21:31 Comment(0)
K
17
  • You want to retrieve the channel list using an API key with YouTube Data API v3.
    • You have already had your API for using YouTube Data API v3.
  • You want to achieve this google-api-python-client with Python.
  • You have already been able to use YouTube Data API v3.

If my understanding is correct, how about this sample script?

Sample script:

Before you use this script, please set your API key.

from googleapiclient.discovery import build

api_key = "###"  # Please set your API key

api_service_name = "youtube"
api_version = "v3"
youtube = build(api_service_name, api_version, developerKey=api_key)
request = youtube.channels().list(
    part="snippet,contentDetails,statistics",
    id="UC_x5XG1OV2P6uZZ5FSM9Ttw"
)
response = request.execute()
print(response)

Note:

  • This sample script supposes that you have already been able to use YouTube Data API v3. If the error related to API occurs, please confirm whether the API is enabled.

Reference:

If I misunderstood your question and this was not the result you want, I apologize.

Knudson answered 17/8, 2019 at 1:31 Comment(1)
No where does the Google documentation specify such simple code of using API keys. Thanks a lot!!Magalimagallanes
N
0

I never got the unauthorized API key to work, so I ended up using the OAuth 2.0 instead.

Go to the Credentials panel from the Google API console. Create a client ID if you haven't already done so, and download it to the same directory as the Python script you're running.

Open your Python script, and find the client_secrets_file string. Change "YOUR_CLIENT_SECRET_FILE.json" to the filename of the .json file you just downloaded.

When your run the script, it will ask you to open a link in your browser to complete the authorization process. Complete that and it should run as intended. Hope this helps.

client_secrets_file = "YOUR_CLIENT_SECRET_FILE.json"
Neophyte answered 2/2, 2020 at 16:57 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.