---
# System prepended metadata

title: Youtube data API v3 Python入門攻略

---

# Youtube data API v3 Python入門攻略

author: D1stance

---

## Update! 特別說明
:::warning
如果你已經遇到圖下類似的錯誤，代表**你需要重創一個project**，
然後依照本說明操作，否則基本上目前無解，不然你會跟某雪魚一樣撞了三小時😭。

補充說明，圖不夠清楚可以右鍵 > 在新分頁開啟影像。
:::
![](https://i.imgur.com/kqltY3y.png)


## 前置作業

首先你需要有任意一隻google帳號，並且最好先去建立一個youtube頻道，猜測會有人用新的帳號來做project，可能會因為沒有頻道會以為是程式寫錯或發生什麼問題。

然後進入到 [Google Cloud Platform 網站](https://console.cloud.google.com/)，
第一次使用的人應該會看到這個畫面

---
![](https://i.imgur.com/GX0uPAk.png)
該填的都完成後來到這裡

---
![](https://i.imgur.com/2y1eZNu.png)
點選選取專案 > 新增專案

---
![](https://i.imgur.com/6uk1kHq.png)
隨便取名字後建立專案

---
![](https://i.imgur.com/rsJ3VCo.png)
建立好後點選右上角的鈴鐺，選取專案來進入你建立好的專案

---
![](https://i.imgur.com/nq8uyRm.png)
按下左上角的hambuger bar(三根橫線)，選擇已啟用的API和服務

---
![](https://i.imgur.com/u9rGJzc.png)
選擇啟用API和服務

---
![](https://i.imgur.com/DKl46p3.png)
搜尋youtube data api v3

---
![](https://i.imgur.com/i0BnoPH.png)
點擊youtube data api v3進入下個頁面後選擇啟用，啟用完成後進行下一步

---

![](https://i.imgur.com/J0jvqIs.png)
點選OAUTH同意畫面，User Type 點擊外部，建立

![](https://i.imgur.com/tBKdPzJ.png)
共有三個欄位為*必填的地方，就填寫任意專案名稱跟你的信箱



---
![](https://i.imgur.com/M8r4gxD.png)

:::danger
極度重要，必須在測試使用者這裡，點選ADD USERS輸入自己的信箱後按新增，否則之後你在跑Python程式時會錯誤到懷疑人生。**感謝郭電神提供此重要信息**
:::
然後接下來基本上就是一直繼續就好，到摘要之後進到下一步

---
![](https://i.imgur.com/IBkYeMk.png)
創一個API金鑰(不用複製東西)

---
![](https://i.imgur.com/JZ0A2lk.png)
再創立一個OAUTH用戶端ID，選擇電腦版應用程式，任意取名

---
![](https://i.imgur.com/HuERFVX.png)
你會看到妳的用戶端ID跟用戶端密碼，把.json檔載下來
檔名應該會是 "client_secret_xxxxxxxxxx.json"，請把它命名你喜歡的模樣，等下會用到

## 測試API
為了使用Youtube API，請使用terminal輸入
`pip install --upgrade google-api-python-client`
`pip install --upgrade google-auth-oauthlib google-auth-httplib2`
預先裝好以上兩個模組

範例程式
```python=1
import os
import google_auth_oauthlib.flow
import googleapiclient.discovery
import googleapiclient.errors

scopes = ["https://www.googleapis.com/auth/youtube.force-ssl"]

os.environ["OAUTHLIB_INSECURE_TRANSPORT"] = "1"

api_service_name = "youtube"
api_version = "v3"
client_secrets_file = "client_secret.json"
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 = "statistics",
    id = "UCFahBR2wixu0xOex84bXFvg"
)
response = request.execute()

print(response)
```
記得把剛才下載的.json檔跟.py檔放在同一個資料夾下，
把上方的變數
```python
client_secrets_file = "這裡放你的檔案名稱"
```

運行python檔案後會看到下列結果
![](https://i.imgur.com/x621slT.png)
點選那個網址後登入你的帳號，會看到下方這個畫面
![](https://i.imgur.com/wYnSzLQ.png)
選擇兩次繼續，就會得到授權碼如示意圖
![](https://i.imgur.com/VyJ8OUm.jpg)
貼在剛才的Python就大功告成，之後每次運行python的程式需要重複類似的動作進行登入驗證。
![](https://i.imgur.com/U38XHz2.png)

