Youtube api YouTube配置文件->;getUsername()返回乱码

Youtube api YouTube配置文件->;getUsername()返回乱码,youtube-api,Youtube Api,我们仍在使用V2 YouTube API。授权用户后,我有以下代码 $token = Zend_Gdata_AuthSub::getAuthSubSessionToken($_GET['token'], $client->getHttpClient()); $youTubeService = $this->Youtube->_getClient($token); $profile = $youTubeService->getUserProfile('default');

我们仍在使用V2 YouTube API。授权用户后,我有以下代码

$token = Zend_Gdata_AuthSub::getAuthSubSessionToken($_GET['token'], $client->getHttpClient());
$youTubeService = $this->Youtube->_getClient($token);
$profile = $youTubeService->getUserProfile('default');
$username = $profile->getUsername()->getText();
但是,这不会返回有效的用户名。它返回一个乱七八糟的字符串,如“HV1lXoWFbpKgumhGZxurEg”

我做错了什么?如何获取用户的实际用户名?我需要它来确定用户频道URL。将返回的用户名添加到以下URL会导致用户名无效的错误


并非每个帐户都有唯一的用户名,您不应该依赖用户名,而应该依赖频道ID

发件人:

对于使用旧版DataAPIv2的开发人员来说,最大的收获是您必须意识到并非每个YouTube频道都有唯一的用户名。幸运的是,每个YouTube频道都保证有一个与之关联的唯一频道ID,由
标记中的值表示,这是我们建议开发人员使用的值,而不是用户名。例如,如果您有一个将YouTube用户名映射到该频道信息的数据库,那么您的旧条目应该继续工作。(现有频道不会丢失用户名。)但是,随着时间的推移,您越来越可能需要使用用户名无法唯一识别的频道

有几个因素简化了从用户名到通道ID的转换。首先,DataAPIv2接受请求URL中的频道ID,只要它接受YouTube用户名,这意味着您可以无缝地将频道ID交换到现有代码中。例如,由于UC_x5XG1OV2P6uZZ5FSM9Ttw是具有传统用户名GoogleDevelopers的频道的频道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)。因此,如果您想检索当前授权用户的视频上传提要,例如,您可以在。

上进行检索,谢谢您提供的信息。所以听起来getUsername()调用返回的是通道ID?如果是这样的话,有没有办法根据这个值来确定频道的URL?我想是我自己弄明白的。似乎在频道ID前面加上youtube.com/Channel/UC实际上加载了正确的频道。谢谢你的帮助!