python-3.x 谷歌(YouTube)认证API

0ve6wy6x  于 2022-12-01  发布在  Python
关注(0)|答案(1)|浏览(180)

我试图使用Google Auth Python库在我自己的YouTube账户中执行OAuth2,这样我就可以收集我自己订阅的指标。
我已经设置了一个服务帐户,该进程创建了一个“Compatible OAuth2”客户端,我从该客户端导出了JSON密钥文件。我还设置了一个API密钥,它也可以执行所有操作(是的,我知道,您体内的sec-eng灵魂正在死亡)...
代码如下:

# Python 3.10.0

from google.oauth2 import service_account

import requests
import json
import os

# Start an OAuth session
service_account_info = json.load(open(f'{os.path.dirname(__file__)}/.config/service_account.json'))
credentials = service_account.Credentials.from_service_account_info(service_account_info)

# API Key
with open(f'{os.path.dirname(__file__)}/.config/.apikey') as f:
    API_KEY = f.read()

HEADERS = {'Accept': 'application/json', 'Content-Type': 'application/json', 'Authorization': f'Bearer {credentials}'}

# Construct the URL
URL = 'https://www.googleapis.com/youtube/v3/subscriptions'

# Parameters
PARAMS = {'part':'id', 'maxResults':'250', 'order':'alphabetical', 'mine':'true', 'key': API_KEY}

# Make the request
request = requests.get(URL, headers=HEADERS, params=PARAMS)
response = request.json()

# Print the response
print(json.dumps(response, indent=4))

但我得到这个错误:

{
    "error": {
        "code": 401,
        "message": "Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
        "errors": [
            {
                "message": "Invalid Credentials",
                "domain": "global",
                "reason": "authError",
                "location": "Authorization",
                "locationType": "header"
            }
        ],
        "status": "UNAUTHENTICATED"
    }
}

我相当有信心,问题是在我如何处理credentials,但我不知道这是应该如何去。
感谢您的意见和帮助。
我所要做的就是列出我自己的YouTube频道订阅。
谢谢你!

vlju58qv

vlju58qv1#

YouTube数据API不支持对标准YouTube帐户进行服务帐户身份验证。请参阅错误消息中的OAuth 2 access token
请求的身份验证凭据无效。需要OAuth 2访问令牌、登录Cookie或其他有效的身份验证凭据。

谣言

我听说它确实适用于Google Workspace域YouTube帐户,因为这样你就可以配置域范围的委托。我还没有尝试过

其他选项

您可以使用标准的oauth2并授权您的应用程序一次。存储刷新令牌,然后您的应用程序可以根据需要使用刷新令牌请求新的访问令牌。只需记住将您的应用程序设置为生产状态,否则您的刷新令牌将在七天后过期,您将需要再次授权应用程序。

相关问题