我試圖連接到使用Python在YouTube Analytics(分析)API。當我訪問Credentials標籤中的Google開發者控制檯時,我點擊Create credentials
下拉菜單並選擇Help me choose
。我點擊我想使用的API(YouTube Analytics API
),我將從(Other non-UI (e.g. cron job, daemon)
)撥打電話,我將訪問哪些數據(Application Data
),然後是否使用Google App Engine(no
)。我點擊按鈕查看我需要哪些憑據,它告訴我You alread have credentials that are suitable for this purpose
。我使用Service account
連接到Google Search Console API,以訪問我公司擁有的多個網站的數據。由於我們有多個網站,因此我使用基於我的電子郵件地址的委派憑據。這是我使用驗證到搜索控制檯API代碼:谷歌API授權(服務帳戶)錯誤:HttpAccessTokenRefreshError:unauthorized_client:未經授權客戶端或範圍,要求
from httplib2 import Http
from oauth2client.service_account import ServiceAccountCredentials
from apiclient.discovery import build
scopes = ['https://www.googleapis.com/auth/webmasters.readonly']
credentials = ServiceAccountCredentials.from_json_keyfile_name('keyfile.json', scopes=scopes)
delegated_credentials = credentials.create_delegated('<my-email>')
http_auth = delegated_credentials.authorize(Http())
webmasters_service = build('webmasters', 'v3', http=http_auth)
現在,我嘗試使用類似的方法使用YouTube Analytics(分析)API,但我得到這個錯誤:HttpAccessTokenRefreshError: unauthorized_client: Unauthorized client or scope in request.
。這裏是我的代碼:
from httplib2 import Http
from oauth2client.service_account import ServiceAccountCredentials
from apiclient.discovery import build
START_DATE = "2016-09-01"
END_DATE = "2016-09-30"
scopes = ['https://www.googleapis.com/auth/yt-analytics.readonly']
credentials = ServiceAccountCredentials.from_json_keyfile_name('keyfile.json', scopes=scopes)
delegated_credentials = credentials.create_delegated('<my-email>')
http_auth = delegated_credentials.authorize(Http())
youtube_service = build('youtubeAnalytics', 'v1', http=http_auth)
analytics_query_response = youtube_service.reports().query(
ids="channel==<my-youtube-channel-id>",
metrics="views",
start_date=START_DATE,
end_date=END_DATE
).execute()
的keyfile.json
是相同的文件(包含服務帳戶憑據),我用它來連接到Search Console的API。我甚至嘗試創建一個新的服務帳戶,並使用這些憑據,但我沒有任何運氣。是的,我已經在開發者控制檯中啓用了所有的YouTube API。
你知道我爲什麼會收到HttpAccessTokenRefreshError: unauthorized_client: ...
錯誤嗎?
編輯:此前我使用OAuth ID而不是服務帳戶,當我運行我的腳本時瀏覽器選項卡出現了,我不得不選擇一個帳戶。我有兩種選擇:一種是我的電子郵件,另一種是我作爲經理加入的YouTube帳戶。您是否認爲我正在使用我的電子郵件地址來生成憑據(而不是YouTube帳戶)?
edit2:看來YouTube帳戶可能不屬於我們Google Apps網域的保護範圍。所以,這可能是我爲什麼不能授權使用我的電子郵件地址,儘管我已經成爲該電子郵件地址的YouTube帳戶的管理員。
您是否已通過IP – MatejMecka
@UnknownDeveloper啓用了從控制檯進行訪問?我不確定該連接到Google Search Console API時究竟該如何執行該操作,但不會得到同樣的錯誤?我對Search Console API沒有任何問題,只是YouTube Analytics API。僅供參考,我在我的問題中添加了更多信息,描述了使用OAuth方法時發生的情況。 – Abundnce10