Я хочу использовать API YouTube для получения пользовательских видео новой подписки с этим вызовом API:
http://gdata.youtube.com/feeds/api/users/default/newsubscriptionvideos
Не входя в систему я получаю этот ответ:
User authentication required.
Error 401
Как я могу войти в YouTube от php?
Вы можете использовать OAuth, AuthSub или ClientLogin. ClientLogin является самым простым (он просто использует имя пользователя/пароль), но его не рекомендуется использовать, поскольку он требует, чтобы пользователи передавали вам свои учетные данные. AuthSub и OAuth этого не делают. Библиотека PHP от Google в настоящее время, похоже, поддерживает только AuthSub (пример PHP) и ClientLogin.
Вот простая функция для авторизации. Это возвращает сообщение об ошибке или 0 в случае успеха. Я использовал собственную библиотеку curl, но не совсем понятно, что $this->curl->SetHeader можно заменить на curl_setopt($ch, CURLOPT_HTTPHEADER, $header)
public function login(Model_ServiceAccount $account){
$this->curl->SetHeader('Content-type', 'application/x-www-form-urlencoded');
$this->curl->post('https://www.google.com/youtube/accounts/ClientLogin',
'Email=' . $account->mail->login . '&Passwd=' . $account->mail->password . '&service=youtube&source=whatever');
if (preg_match('~Error=(.+)~', $this->curl->getResponse(), $match))
return $match[1];
if (!preg_match('~Auth=(.*)~', $this->curl->getResponse(), $match)) Toolkit::error('Unhandled error in Authentication request');
$authToken = $match[1];
$this->curl->SetHeader('Authorization: GoogleLogin auth', $this->developerKey);
$this->curl->SetHeader('X-GData-Key: key=', $authToken);
$this->curl->SetHeader('Content-Type', 'application/atom+xml');
return 0;
}