使用Oauth2.0时获取403 Forbidden

时间:2014-04-21 08:31:40

标签: django python-2.7 youtube youtube-api http-status-code-403

我正在使用“Oauth2.0”来访问YouTube数据API。 该网站托管在Django平台上,其地址为http://listplay1.pythonanywhere.com/

每次我要授权自己时,我都会刷新访问令牌并使用新令牌进行访问。

大部分时间它完美无缺,但有时我会收到403 Forbidden错误。当我从我的电脑上的终端做同样的事情时,它始终是

任何人都可以了解如何在一段时间内发生这种情况,更重要的是,如何解决这个问题?

提前感谢工厂,

* $$$部分当然是故意隐藏的。

def auth():
   h={'Host':'accounts.google.com','Content-Type':'application/x-www-form-urlencoded','X-GData-Key':'key=$$$'}
   content={'client_id':'567194806765-r1pdllkji4tpgv1dc0a9ihrvh0hocoik.apps.googleusercontent.com','client_secret':'$$$','refresh_token':'$$$','grant_type':'refresh_token'}
   p=urllib.urlencode(content)
   r = requests.post('https://accounts.google.com/o/oauth2/token', data=p,headers=h)
   token=r.json().values()[0]
   credentials = AccessTokenCredentials(token,'my-user-agent/1.0')
   return build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION,http=credentials.authorize(httplib2.Http()))

和错误     环境:

Request Method: GET
Request URL: http://listplay1.pythonanywhere.com/thanks/

    Django Version: 1.3.7
    Python Version: 2.7.5
    Installed Applications:
    ['django.contrib.auth',
     'django.contrib.contenttypes',

 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django.contrib.admin',
 'main.myapp']
Installed Middleware:
('django.middleware.common.CommonMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware')


Traceback:
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response
  111.                         response = callback(request, *callback_args, **callback_kwargs)
File "./main/myapp/views.py" in thanks
  64.     Pid=create_playlist(YT="",title=TITLE)
File "/home/LISTPLAY1/LISTPLAY/listplay.py" in create_playlist
  261.     YT=auth()
File "/home/LISTPLAY1/LISTPLAY/listplay.py" in auth
  257.     return build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION,http=credentials.authorize(httplib2.Http()))
File "/home/LISTPLAY1/LISTPLAY/oauth2client/util.py" in positional_wrapper
  132.       return wrapped(*args, **kwargs)
File "/home/LISTPLAY1/LISTPLAY/apiclient/discovery.py" in build
  192.   resp, content = http.request(requested_url)
File "/home/LISTPLAY1/LISTPLAY/oauth2client/util.py" in positional_wrapper
  132.       return wrapped(*args, **kwargs)
File "/home/LISTPLAY1/LISTPLAY/oauth2client/client.py" in new_request
  490.                                    redirections, connection_type)
File "/usr/local/lib/python2.7/dist-packages/httplib2/__init__.py" in request
  1570.                     (response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey)
File "/usr/local/lib/python2.7/dist-packages/httplib2/__init__.py" in _request
  1317.         (response, content) = self._conn_request(conn, request_uri, method, body, headers)
File "/usr/local/lib/python2.7/dist-packages/httplib2/__init__.py" in _conn_request
  1252.                     conn.connect()
File "/usr/local/lib/python2.7/dist-packages/httplib2/__init__.py" in connect
  1018.                 sock.connect((self.host, self.port))
File "/usr/local/lib/python2.7/dist-packages/httplib2/socks.py" in connect
  424.             self.__negotiatehttp(destpair[0], destpair[1])
File "/usr/local/lib/python2.7/dist-packages/httplib2/socks.py" in __negotiatehttp
  390.             raise HTTPError((statuscode, statusline[2]))

Exception Type: HTTPError at /thanks/
Exception Value: (403, 'Forbidden')

0 个答案:

没有答案
相关问题