2016-01-29 62 views
1

所以我編寫了這個簡單的腳本,我知道它不會工作,但腳本本身沒有錯誤地運行,並打電話給www.googleapis.com,所以發生了一些事情。儘管沒有看到HTTP響應,但我不知道什麼是錯誤的。它真的在做事情的證據是因爲我在中國,當我跑的解釋有一段時間,直到我打破手動腳本:如何在python中打印HTTP響應?

OUTPUT WITHOUT PROXY : 

File "youtubeconnect.py", line 30, in <module> 
    execute() 
    File "youtubeconnect.py", line 27, in execute 
    youtube = authenticate() 
    File "youtubeconnect.py", line 15, in authenticate 
    service = build('youtube', 'v3',http=http) 
    File "/home/xavier/Code/autotube/venv/lib/python3.5/site-packages/oauth2client-1.5.2-py3.5.egg/oauth2client/util.py", line 140, in positional_wrapper 
    File "/home/xavier/Code/autotube/venv/lib/python3.5/site-packages/google_api_python_client-1.4.2-py3.5.egg/googleapiclient/discovery.py", line 196, in build 
    File "/home/xavier/Code/autotube/venv/lib/python3.5/site-packages/google_api_python_client-1.4.2-py3.5.egg/googleapiclient/discovery.py", line 242, in _retrieve_discovery_doc 
    File "/home/xavier/Code/autotube/venv/lib/python3.5/site-packages/oauth2client-1.5.2-py3.5.egg/oauth2client/client.py", line 596, in new_request 
    File "/home/xavier/Code/autotube/venv/lib/python3.5/site-packages/httplib2-0.9.2-py3.5.egg/httplib2/__init__.py", line 1314, in request 
    (response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey) 
    File "/home/xavier/Code/autotube/venv/lib/python3.5/site-packages/httplib2-0.9.2-py3.5.egg/httplib2/__init__.py", line 1064, in _request 
    (response, content) = self._conn_request(conn, request_uri, method, body, headers) 
    File "/home/xavier/Code/autotube/venv/lib/python3.5/site-packages/httplib2-0.9.2-py3.5.egg/httplib2/__init__.py", line 987, in _conn_request 
    conn.connect() 
    File "/usr/lib/python3.5/http/client.py", line 1229, in connect 
    super().connect() 
    File "/usr/lib/python3.5/http/client.py", line 826, in connect 
    (self.host,self.port), self.timeout, self.source_address) 
    File "/usr/lib/python3.5/socket.py", line 702, in create_connection 
    sock.connect(sa) 

現在,當我通過proxychains和隧道運行解釋它工作原理:

ProxyChains-3.1 (http://proxychains.sf.net) 
|DNS-request| www.googleapis.com 
|S-chain|-<>-127.0.0.1:1080-<><>-4.2.2.2:53-<><>-OK 
|DNS-response| www.googleapis.com is 173.194.208.95 
|S-chain|-<>-127.0.0.1:1080-<><>-173.194.208.95:443-<><>-OK 

我是新來的蟒蛇,怎麼能得到HTTP錯誤,谷歌是給我回來時,我嘗試錯誤地連接到API的輸出?我的代碼:

import httplib2 
import os 
from oauth2client import tools 
from oauth2client.client import AccessTokenCredentials 
#from oauth2client.client import AccessTokenRefreshError 
from googleapiclient.discovery import build 
from googleapiclient.http import MediaFileUpload 
import urllib 
def authenticate(): 
    #scope = "https://www.googleapis.com/auth/youtube.upload" 
    acc_token = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" 
    flow = AccessTokenCredentials(
     acc_token,'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36') 
    http = flow.authorize(httplib2.Http()) 
    service = build('youtube', 'v3',http=http) 
    return(service) 


def initialize_upload(youtube): 
    tags = None 
    vid = youtube.videos().insert 
    media_body = MediaFileUpload('1977.mp4', mimetype='video/mp4', 
           chunksize=1024 * 1024, resumable=True) 


def execute(): 
    youtube = authenticate() 
    initialize_upload(youtube) 

execute() 
+0

通常使用oauth2將用戶重定向到Google,用戶接受認證的範圍...然後使用新標記重定向回註冊的www站點,您可以使用該標記代表用戶採取行動。 –

+0

我正在使用驗證的令牌。這是另一種在Google API的任何文檔中都沒有描述的技術。我知道它連接到api並做了一些事情,但我看不到發生了什麼事情,並沒有太多例子可以說沒有人使用這種技術,但我知道有可能做到這一點,因爲我已經看到了報告其他人。 – xavier

回答