我正嘗試在OAuth中使用YouTube服務。我已經能夠獲得請求令牌,授權它們並將它們轉換爲訪問令牌。OAuth和YouTube API
現在我試圖使用這些標記實際上向YouTube服務發出請求。例如,我試圖將視頻添加到播放列表。因此,我想提出一個POST請求
https://gdata.youtube.com/feeds/api/playlists/XXXXXXXXXXXX
發送的
<?xml version="1.0" encoding="UTF-8"?>
<entry xmlns="http://www.w3.org/2005/Atom"
xmlns:yt="http://gdata.youtube.com/schemas/2007">
<id>XXXXXXXXX</id>
</entry>
,並與頭
Gdata-version: 2
Content-type: application/atom+xml
Authorization: OAuth oauth_consumer_key="www.xxxxx.xx",
oauth_nonce="xxxxxxxxxxxxxxxxxxxxxxxxx",
oauth_signature="XXXXXXXXXXXXXXXXXXX",
oauth_signature_method="HMAC-SHA1",
oauth_timestamp="1310985770",
oauth_token="1%2FXXXXXXXXXXXXXXXXXXXX",
oauth_version="1.0"
X-gdata-key: key="XXXXXXXXXXXXXXXXXXXXXXXXX"
加上一些標準頭主體(主機和內容長度)這是由urllib2(我使用Python)在請求時添加的。
不幸的是,我得到一個Error 401: Unknown authorization header
,響應的頭是
X-GData-User-Country: IT
WWW-Authenticate: GoogleLogin service="youtube",realm="https://www.google.com/youtube/accounts/ClientLogin"
Content-Type: text/html; charset=UTF-8
Content-Length: 179
Date: Mon, 18 Jul 2011 10:42:50 GMT
Expires: Mon, 18 Jul 2011 10:42:50 GMT
Cache-Control: private, max-age=0
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
Server: GSE
Connection: close
特別是我不知道如何解釋WWW-Authenticate頭,其境界提示給ClientLogin。
我也嘗試玩OAuth Playground和由該網站發送的授權標題看起來完全像我的,除了字段的順序。儘管如此,在plyaground一切正常。那麼,差不多:我得到一個錯誤,告訴你開發人員密鑰丟失了,但這是合理的,因爲沒有辦法在操場上添加一個。仍然,我越過了錯誤401.
我也嘗試從那裏手動複製授權標題,並且我得到Error 400: Bad request
。
我在做什麼錯?
然後接受你自己的答案。 – akira