2013-06-05 77 views
0

我們仍在使用V2 YouTube API。授權用戶後,我有以下代碼。YouTubeProfile-> getUsername()返回亂碼

$token = Zend_Gdata_AuthSub::getAuthSubSessionToken($_GET['token'], $client->getHttpClient()); 
$youTubeService = $this->Youtube->_getClient($token); 
$profile = $youTubeService->getUserProfile('default'); 
$username = $profile->getUsername()->getText(); 

但是,這並沒有返回有效的用戶名。它返回一串亂碼,如「HV1lXoWFbpKgumhGZxurEg」

我在做什麼錯?我如何獲得用戶的實際用戶名?我需要它來確定用戶頻道網址。添加返回到以下網址的用戶名給無效用戶名

http://www.youtube.com/profile_videos?user=HV1lXoWFbpKgumhGZxurEg

回答

1

不是每個賬戶的錯誤都有一個唯一的用戶名,你不應該依賴於用戶名,而是在通道的ID。

API documents

使用舊數據API V2開發人員最大的外賣是,你必須意識到,並非每個YouTube頻道都有一個唯一的用戶名。幸運的是,每個YouTube頻道都有唯一的關聯頻道ID,由<yt:channelId>標記中的值表示,這是我們建議開發人員使用的值,而不是用戶名。例如,如果您有一個將YouTube用戶名映射到該頻道相關信息的數據庫,則舊條目應繼續有效。 (現有渠道不會失去他們的用戶名)。但是,隨着時間的推移,您將越來越可能需要使用用戶名無法唯一標識的渠道。

有幾個因素可以簡化從用戶名到頻道ID的過渡。首先,Data API v2在接受YouTube用戶名的任何地方接受請求URL中的頻道ID,這意味着您可以將頻道ID無縫切換到現有代碼中。例如,由於UC_x5XG1OV2P6uZZ5FSM9Ttw是爲了與傳統的用戶名Google代碼的通道的通道ID,下面的兩個URL是等價的API請求:

https://gdata.youtube.com/feeds/api/users/GoogleDevelopers?v=2.1 https://gdata.youtube.com/feeds/api/users/UC_x5XG1OV2P6uZZ5FSM9Ttw?v=2.1

另一件事要記住的是,每當你通過驗證v2請求,您在構建請求URL時不需要包含授權頻道的用戶名。您始終可以使用值的默認值代替用戶名(或通道ID)。因此,例如,如果您想要爲當前授權用戶檢索視頻上傳Feed,則可以在https://gdata.youtube.com/feeds/api/users/default/uploads?v=2.1上執行此操作。

+0

感謝您的信息。因此,聽起來像getUsername()調用返回的是Channel ID?如果是這樣,是否有任何方法從這個值來確定頻道的URL? – thefreeman

+0

我想我自己弄明白了。實際上,youtube.com/channel/UC加載了正確的頻道,似乎在頻道ID前加上了。謝謝你的幫助! – thefreeman