PHP Zend YoutTube API上载-此操作错误需要开发人员密钥
我正在尝试通过浏览器上传到YouTube。我正在为ZF2使用PHP、Zend Framework 2和ZendGData客户端库。我已经按照谷歌开发者指南进行了设置,并成功地执行了未经授权的请求,即搜索视频。我还能够执行授权请求,即从我的YouTube帐户检索我的全名 当我尝试执行上载-检索上载令牌时,我得到错误: 预期响应代码200,得到403 此操作需要开发者密钥 错误403 我的上传器控制器如下所示。我已经使用教程中概述的方法设置了一个开发人员密钥,并将其包含在我的代码中。还提供了相应的用户/电子邮件和密码。我使用Curl连接到API,这在dev指南中没有介绍,但我认为这不是问题所在 ` `PHP Zend YoutTube API上载-此操作错误需要开发人员密钥,php,api,zend-framework,upload,youtube,Php,Api,Zend Framework,Upload,Youtube,我正在尝试通过浏览器上传到YouTube。我正在为ZF2使用PHP、Zend Framework 2和ZendGData客户端库。我已经按照谷歌开发者指南进行了设置,并成功地执行了未经授权的请求,即搜索视频。我还能够执行授权请求,即从我的YouTube帐户检索我的全名 当我尝试执行上载-检索上载令牌时,我得到错误: 预期响应代码200,得到403 此操作需要开发者密钥 错误403 我的上传器控制器如下所示。我已经使用教程中概述的方法设置了一个开发人员密钥,并将其包含在我的代码中。还提供了相应的用
因此,据我所知,我几乎完全遵循了开发人员指南,有一个开发人员密钥,但仍然得到一个错误。你知道问题出在哪里吗?所以在我自己努力解决了一段时间后,我终于找到了一个很好的解决办法。在实例化YouTube对象时提供的dev密钥似乎没有插入到头中。要解决此问题,只需在执行操作时提供标头。这适用于任何条目,如播放列表或视频
$tokenArray = $yt->getFormUploadToken($myVideoEntry, $clientId, $developerKey);
// vendor/zendframework/zendgdata/library/ZendGData/YouTube.php
public function getFormUploadToken(
$videoEntry, $clientId, $developerKey,
$url='https://gdata.youtube.com/action/GetUploadToken')
{
//$extraHeaders = $this->getHttpClient()->getRequest()->getHeaders()->toArray();
$extraHeaders = array(
'X-GData-Client' => $clientId,
'X-GData-Key' => 'key='. $developerKey
);
if ($url != null && is_string($url)) {
// $response is a Zend\Http\Response object
$response = $this->post($videoEntry, $url, null, null, $extraHeaders);
return self::parseFormUploadTokenResponse($response->getBody());
} else {
throw new App\Exception(
'Url must be provided as a string URL');
}
}
$dev_key='**';
$entry=new-ZendGData\YouTube\VideoEntry();
//你在这里做什么
$uploadUrl='1!'http://uploads.gdata.youtube.com/feeds/api/users/default/uploads'
$className='zendgddata\YouTube\VideoEntry';
$extraHeaders=array('X-GData-Key'=>“Key=$dev_Key”);
试一试{
$yt->insertEntry($entry、$uploadUrl、$className、$extraHeaders);
}捕获(例外$e){
死亡($e->getMessage());
}
$tokenArray = $yt->getFormUploadToken($myVideoEntry, $clientId, $developerKey);
// vendor/zendframework/zendgdata/library/ZendGData/YouTube.php
public function getFormUploadToken(
$videoEntry, $clientId, $developerKey,
$url='https://gdata.youtube.com/action/GetUploadToken')
{
//$extraHeaders = $this->getHttpClient()->getRequest()->getHeaders()->toArray();
$extraHeaders = array(
'X-GData-Client' => $clientId,
'X-GData-Key' => 'key='. $developerKey
);
if ($url != null && is_string($url)) {
// $response is a Zend\Http\Response object
$response = $this->post($videoEntry, $url, null, null, $extraHeaders);
return self::parseFormUploadTokenResponse($response->getBody());
} else {
throw new App\Exception(
'Url must be provided as a string URL');
}
}