In this tutorial, we will write a simple python program will help you to obtain a user authorization on Youtube API by writing a simple Python program.
- You should have a google account
- Python 3.5+
- Pip management tool
Step 1: SETUP GOOGLE API PROJECT
Login to google and go to this link: https://console.developers.google.com/start/api?id=youtube
- Create Project
- Go to API’s Overview >> Configure Consent Screen
- Create a user
- Type: External and then save
- Enter Product name and the save
- Go to API’s Overview >> Credentials
- Create credentials >> OAuth client ID
- Application type: Others
- Name: Python3
- Create OAuth client
- Download JSON and rename it to client_secret.json
- Save this json file to a folder where our Python program will be saved.
- Enable Youtube Data API
- On API & Service Dashboard:
- Go to Library
- Find Youtube Data API V3
- Enable it
STEP2: SETUP GOOGLE API’s Client Library for Python
Run windows command prompt (or cmd) and type this:
pip install --upgrade google-api-python-client pip install --upgrade google-auth-oauthlib google-auth-httplib2 pip install oauth2client
STEP 3: Writing a simple Python code for User Authentication
Create a new python file and name it as authentication.py
Import the libraries, paste the following codes:
import os, sys import httplib2 import google_auth_oauthlib.flow import googleapiclient.discovery #import googleapiclient.errors from apiclient.discovery import build from oauth2client.file import Storage from oauth2client.tools import run_flow from oauth2client.client import flow_from_clientsecrets
Set global variables. The client_secret.json should be saved on the same directory where our Python code is located. Later client-oauth2.json will be created on the same directory once we run the code.
CLIENT_SECRETS_FILE = os.path.join(sys.path, "client_secret.json") CLIENT_OAUTH2_FILE = os.path.join(sys.path, "client-oauth2.json") YOUTUBE_READ_WRITE_SCOPE = "https://www.googleapis.com/auth/youtube" YOUTUBE_API_SERVICE_NAME = "youtube" YOUTUBE_API_VERSION = "v3" MISSING_CLIENT_SECRETS_MESSAGE = ""
Create function to get the service authenticated
def get_authenticated_service(args): flow = flow_from_clientsecrets(CLIENT_SECRETS_FILE, scope=YOUTUBE_READ_WRITE_SCOPE, message=MISSING_CLIENT_SECRETS_MESSAGE) storage = Storage(CLIENT_OAUTH2_FILE) credentials = storage.get() if credentials is None or credentials.invalid: credentials = run_flow(flow, storage) return build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION, http=credentials.authorize(httplib2.Http()))
Finally, add this code:
if __name__ == "__main__": client = get_authenticated_service()
Run the code to get access to your Youtube account.
On my computer, I got this:
Your web browser should open. If you are logged in on google on the same browser, you have see like this:
Select your prepared Youtube channel.
You will get this warning. Don’t worry about this. Just click advance and click “Go to [Your product name] (unsafe)”
Click Allow to grant permission
Finally, you should see this message on your browser: “The authentication flow has completed”.
And on my computer, it shows authentication successful.
If you check your working directory, an OAuth access token file named as client-oauth2.json was created.
Once you have these two files namely client_secret.json and client-oauth2.json, you dont have to authenticate again and again.
From now on, you can make a request on Youtube API like listing your subscriptions, liked videos and channel activities.
To test this, please read my next post: How to list subscription