我在这个4小时内敲打我的头,所以我可能需要一点帮助。PHP中的YouTube数据API v3帐户服务:403 - 禁止:YoutubeSignupRequired
我想要做的就是在YouTube上存储视频,我们正在参加视频竞赛。我真的更喜欢通过服务帐户进行双方的OAuth访问(我希望即使没有Gmail帐户的用户也能向我们发送视频,并且希望将这些视频私有或不公开在我们的YouTube帐户中)。
但它似乎不工作。我的代码现在的问题是这样的:
function go()
{
require_once 'googleClient/Google_Client.php';
require_once 'googleClient/contrib/Google_YoutubeService.php';
define("CLIENT_ID",'xxxxxxx.apps.googleusercontent.com');
define("SERVICE_ACCOUNT_NAME",'[email protected]');
define("KEY_FILE", 'googleClient/verylonghashtagprivacystuff-privatekey.p12');
define("SECRET_FILE", 'client_secrets.json');
$client = new Google_Client();
$client->setApplicationName("My Contest App");
$key = file_get_contents(KEY_FILE);
$secret = file_get_contents(SECRET_FILE);
$GAC = new Google_AssertionCredentials(SERVICE_ACCOUNT_NAME,
array('https://www.googleapis.com/auth/youtube.upload',
'https://www.googleapis.com/auth/youtube'),
$key ,'notasecret','http://oauth.net/grant_type/jwt/1.0/bearer');
$client->setAssertionCredentials($GAC);
$client::$auth->refreshTokenWithAssertion();
$client->setClientId(CLIENT_ID); // Did tried to put that one sooner
$client->setClientSecret($secret); // Did tried to put that one sooner
$json = $client->getAccessToken();
$accessToken = json_decode($json)->access_token;
$video = array();
$video["snippet"] = array();
$snippet = new Google_VideoSnippet();
$snippet->setTitle("Contest Video USERNAME");
$snippet->setDescription("Video for contest 2013 USERNAME.");
$snippet->setTags(array("Contest","Whatever","2013"));
$snippet->setCategoryId("22"); //Did tried "Entertainment".
$status = new Google_VideoStatus();
$status->setPrivacyStatus("unlisted");
$video = new Google_Video();
$video->setSnippet($snippet);
$video->setStatus($status);
$client->setAccessToken($json);
$youtube = new Google_YoutubeService($client);
$url = '/projet_video.mp4';
$response = $youtube->videos->insert(
"status,snippet",
$video,
array( 'data' => file_get_contents($url),'mimeType' => "video/*"));
//Did tried video/mp4
return $response ;}
,其结果是:
error": { "errors": [ {
"domain": "youtube.header",
"reason": "youtubeSignupRequired",
"message": "Forbidden",
"locationType": "header",
"location": "Authorization"
}], "code": 403, "message": "Forbidden" }
。 – user2004005
我很确定这是相同的东西,回答在http://stackoverflow.com/questions/14453505/youtube-data-api-v3-video-upload-403-forbidden-youtubesignuprequired –
非常感谢回答我们。我认为最好自己提出问题,因为他没有提供太多的代码,而且我们似乎使用不同的语言。 我会尝试给你的答案,尽快发布反馈。 但是这很奇怪。我用来创建客户端API ID的Google帐户,以及这些东西(API ON等)是我们用来发布视频到YouTube的那个。我以为它以某种方式连接在一起。 谢谢 – user2004005