2014-09-28 2 views
0

Я использую drupal 7 с модулем Media Youtube. Модуль вызывает API-интерфейс youtube oEmbed.Youtube oEmbed API: 302, затем 503 ошибки

Это пример URL модуль позвонит: http://www.youtube.com/oembed?url=https://www.youtube.com/watch?v=YZqqD1Rv5BI

На моем рабочем столе, это возвращает файл JSON, все в порядке. Однако на сервере моего сайта я получаю сообщение об ошибке 503 Service недоступно. На самом деле я FRST получить 302 не нашел, произнося URL переместилась, потом 503 ошибка в:

Вот что я получаю, когда я делаю Wget вручную:

wget http://www.youtube.com/oembed?url=https://www.youtube.com/watch?v=YZqqD1Rv5BI 
--2014-09-28 21:55:49-- http://www.youtube.com/oembed?url=https://www.youtube.com/watch?v=YZqqD1Rv5BI 
Resolving www.youtube.com (www.youtube.com)... 2a00:1450:4007:808::1004, 173.194.40.131, 173.194.40.132, ... 
Connecting to www.youtube.com (www.youtube.com)|2a00:1450:4007:808::1004|:80... connected. 
HTTP request sent, awaiting response... 302 Found 
Location: http://ipv6.google.com/sorry/IndexRedirect?continue=http://www.youtube.com/oembed%3Furl%3Dhttps://www.youtube.com/watch%3Fv%3DYZqqD1Rv5BI [following] 
--2014-09-28 21:55:49-- http://ipv6.google.com/sorry/IndexRedirect?continue=http://www.youtube.com/oembed%3Furl%3Dhttps://www.youtube.com/watch%3Fv%3DYZqqD1Rv5BI 
Resolving ipv6.google.com (ipv6.google.com)... 2a00:1450:4007:808::1008 
Connecting to ipv6.google.com (ipv6.google.com)|2a00:1450:4007:808::1008|:80... connected. 
HTTP request sent, awaiting response... 503 Service Unavailable 
2014-09-28 21:55:49 ERROR 503: Service Unavailable. 

Любая помощь будет очень много оценили. Заранее спасибо

+0

Привет! Вы можете опубликовать эту проблему на code.google.com, чтобы получать обновления и получать заметки, когда они будут исправлены: https://code.google.com/p/gdata-issues/issues/detail?id=6664 – tzi

+0

Done, Thanks :) – MonsieurNinja

ответ

1

Я встретил ту же ошибку, но проблема не в модуле, к сожалению (я смог бы исправить ее и зафиксировать патч для модуля mantainer).

Как вы уже протестировали, даже простой wget дает ту же проблему, и он исходит из того, что он использует IPv6. Если вы можете заставить запросы на YouTube обрабатывать через IPv4, проблема будет решена. Но это всего лишь обход, а не реальное решение.

+0

Привет, спасибо за ваш ответ. Это настройка, которую мне нужно делать на моем сервере? Или это может быть что-то, что я могу сделать внутри php-скрипта? (Я сомневаюсь, что второе решение возможно). Кроме того, вы знаете, почему запрос ipv6 основан? Это что-то Google установил? Имеет ли факт, что он работает на моем рабочем столе, означает, что мой маршрутизатор обрабатывает запросы в ipv4? – MonsieurNinja

+0

Я также получаю ту же проблему. Как я могу заставить curl использовать IPv4? –

0

я нашел способ заставить IPv4 DNS разрешающий в PHP:

$url = 'http://www.youtube.com/oembed?format=json&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DZVSd5aSXlQ0'; 
$c = curl_init(); 
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($c, CURLOPT_URL, $url); 
curl_setopt($c, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); 
$json = curl_exec($c); 
$status = curl_getinfo($c,CURLINFO_HTTP_CODE); 
curl_close($c); 

Это решение на самом деле работает для меня.

+0

Drupal 7 и модуль media_youtube используют 'drupal_http_request' и не зависают для управления запросами. AFAIK, вы не можете сделать это с помощью 'drupal_http_request'. – drcelus

+0

вполне вероятно, что drupal не использует завиток и что вы не можете легко его установить, потому что код является частью низких слоев. Мне пришлось исправлять некоторые внешние библиотеки (https://github.com/arnaud-lb/alb-oembed/pull/6), чтобы исправить это в моих проектах. – tzi