Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP Zend YoutTube API上载-此操作错误需要开发人员密钥_Php_Api_Zend Framework_Upload_Youtube - Fatal编程技术网

PHP Zend YoutTube API上载-此操作错误需要开发人员密钥

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。我正在为ZF2使用PHP、Zend Framework 2和ZendGData客户端库。我已经按照谷歌开发者指南进行了设置,并成功地执行了未经授权的请求,即搜索视频。我还能够执行授权请求,即从我的YouTube帐户检索我的全名

当我尝试执行上载-检索上载令牌时,我得到错误:

预期响应代码200,得到403

此操作需要开发者密钥

错误403

我的上传器控制器如下所示。我已经使用教程中概述的方法设置了一个开发人员密钥,并将其包含在我的代码中。还提供了相应的用户/电子邮件和密码。我使用Curl连接到API,这在dev指南中没有介绍,但我认为这不是问题所在

`

`


因此,据我所知,我几乎完全遵循了开发人员指南,有一个开发人员密钥,但仍然得到一个错误。你知道问题出在哪里吗?

所以在我自己努力解决了一段时间后,我终于找到了一个很好的解决办法。在实例化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');
        }
    }