Google App Engine Python - YouTube API v3 - 权限不足

Posted

技术标签:

【中文标题】Google App Engine Python - YouTube API v3 - 权限不足【英文标题】:Google App Engine Python - YouTube API v3 - Insufficient Permission 【发布时间】:2015-08-29 13:29:10 【问题描述】:

我成功复制了 this 视频中的 Tasks API,但我无法成功将此格式转换为使用 YouTube API。

这是我的 .py 文件:

import httplib2
import os
import sys
import jinja2
import webapp2
import logging
import pprint

from oauth2client import tools
from oauth2client.client import flow_from_clientsecrets
from oauth2client.client import OAuth2WebServerFlow
from oauth2client.client import AccessTokenRefreshError
from oauth2client.tools import argparser, run_flow
from oauth2client.appengine import OAuth2Decorator

from apiclient.discovery import build
from google.appengine.ext.webapp import util
from google.appengine.ext.webapp import template

decorator = OAuth2Decorator(
    client_id = '*my client ID*',
    client_secret = '*my client secret*',
    scope='https://www.googleapis.com/auth/youtube')

service = build("youtube", "v3")

class MainHandler(webapp2.RequestHandler):
    @decorator.oauth_required
    def get (self):
        self.response.headers['Content-Type'] = 'text/plain'

        channels_list = service.channels().list(
            mine=True,
            part="id"
        ).execute(http = decorator.http())
        self.response.out.write (pprint.pformat(channels_list))


app = webapp2.WSGIApplication (
        [
            ('/', MainHandler),
            (decorator.callback_path, decorator.callback_handler()),
        ], 
        debug=True)

这是我的回溯:

Traceback (most recent call last):

  File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 1535, in __call__

    rv = self.handle_exception(request, response, e)

  File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 1529, in __call__

    rv = self.router.dispatch(request, response)

  File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 1278, in default_dispatcher

    return route.handler_adapter(request, response)

  File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 1102, in __call__

    return handler.dispatch()

  File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 572, in dispatch

    return self.handle_exception(e, self.app.debug)

  File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 570, in dispatch

    return method(*args, **kwargs)

  File "C:\Users\...\testapp\oauth2client\appengine.py", line 733, in check_oauth

    resp = method(request_handler, *args, **kwargs)

  File "C:\Users\...\testapp\testapp.py", line 35, in get

    ).execute(http = decorator.http())

  File "C:\Users\...\testapp\oauth2client\util.py", line 129, in positional_wrapper

    return wrapped(*args, **kwargs)

  File "C:\Users\...\testapp\apiclient\http.py", line 723, in execute

    raise HttpError(resp, content, uri=self.uri)

HttpError: <HttpError 403 when requesting https://www.googleapis.com/youtube/v3/channels?part=id&mine=true&alt=json returned "Insufficient Permission">

INFO     2015-06-13 12:27:54,515 module.py:788] default: "GET / HTTP/1.1" 500 2278

我已经检查并再次检查了我是否同时启用了 YouTube 数据 API 和 YouTube 分析 API 启用了此客户端 ID。我什至禁用了它们并重新启用以检查,但我仍然收到此错误。

我是 GAE 及其方法的新手,所以我可能不理解 Traceback 中的错误。

需要注意的是,我收到了针对 apiclient、httplib2、oauth2client 和 uritemplate 的“ImportError: No module named...”,因此我将这些文件夹直接移到了我的应用程序文件中(并且没有再次出现该错误) .不确定将它们直接移动到文件夹中是否会导致错误。

【问题讨论】:

【参考方案1】:

我希望我没有浪费任何人的时间,但如果其他人有这个问题,我发现this 问题,虽然我没有内存缓存问题,但我撤销了用户帐户对我的应用程序的权限我正在使用,刷新应用程序并再次授予权限,现在它似乎可以正常工作了。

我猜这是 Google 方面的问题。感谢任何花时间阅读我的问题的人。

【讨论】:

实际上这似乎是随机发生的,撤销权限似乎并不总是有帮助。看起来 Google 的 OAuth2 服务器有时可能会在存储凭据时出现问题,因为应用程序在 localhost 之外运行。

以上是关于Google App Engine Python - YouTube API v3 - 权限不足的主要内容,如果未能解决你的问题,请参考以下文章

python 将Google App Engine SDK添加到Python virtualenv

python Google App Engine:将CSV导入数据存储区

google-app-engine:google api python客户端hello world中的ImportError httplib2

Google App Engine 标准 Python 云构建

Google App Engine - 大查询 - Python 找不到库 google.cloud

Python 2.5 Google App Engine [关闭]