2017-04-13 54 views
1

它只是說{「錯誤」:「未經授權」,「狀態」:401,「消息」:「獲取授權令牌的錯誤」},不知道爲什麼我可以寫與我的令牌聊天。 下面的代碼:從Python獲取Twitch通道ID

url = "https://api.twitch.tv/kraken/channel" 
channel_id = urllib.request.Request(url) 
channel_id.add_header("Client-ID", CLIENT_ID) 

#MY_OAUTH defined as MY_OAUTH = "oauth:123blablabla" 
channel_id.add_header("Authorization: OAuth", MY_OAUTH") 

response = urllib.request.urlopen(channel_id) 
tmpJSON = json.loads(response.read()) 

編輯:這裏是get_channel_id功能的引擎收錄:https://pastebin.com/Jm0EuWk9

回答

0

看來你Authorization頭形成不良。假設MY_OAUTH爲您的訪問令牌,我相信你的意思是寫:

channel_id.add_header("Authorization", "OAuth " + MY_OAUTH) 

事實上,Twitch-API authentication documentation建議經過時在HTTP標頭的訪問令牌執行以下要求:

curl -H "Authorization: OAuth [access token]" https://api.twitch.tv/kraken/ 

正如你可以看到,標題需要設置爲Authorization: OAuth [access token],而不是Authorization: OAuth: [access token]

+0

哦,我的壞。無論如何,我試圖解決我的錯誤,但我得到_urllib.error.HTTPError:HTTP錯誤401:Unauthorized_,這很奇怪,因爲我連接到聊天時使用相同的OAuth。 編輯:即使有一個新的新的令牌,也許我應該截斷令牌,並設置開始時沒有「oauth:」? –

+0

的確,您的標記字符串不應包含標記本身以外的任何附加字符,並且必須採用「pk2bh6y1vi8mrn7l67bp9i6dpg2wnk」格式。你有沒有嘗試去除面對的「oauth:」呢?你確定它是你傳遞的訪問令牌嗎? –

+0

是的,我昨天修好了。出於某種原因,我無法獲得渠道ID:從服務器返回的JSON與應該的方式有所不同。根據o API,應該有「channel_id」字段。用相同的參數,使用curl,JSON字符串是正確的。 –