У меня есть страница с тегом изображения Open Graph:
<meta property="og:image" content="http://childhumor2.homeip.net:9009/_ah/img/RYCF7Ty7wODp9R-N_QIWYA===s200"/>
Изображение представляет собой BLOB-объект GAE, а URL-адрес исходит от вызова get_serving_url
. URL работает нормально нормально.
Теперь, если кому-то нравится эта страница, уменьшенное изображение, отображаемое в ленте новостей, не работает. Только пустое изображение 1x1 возвращается в браузер.
При просмотре страницы FB сгенерированный HTML-код:
<img src="http://external.ak.fbcdn.net/safe_image.php?d=6b635a7f80252e93c6b28e2dbe4ad440&w=90&h=90&url=http%3A%2F%2Fchildhumor2.homeip.net%3A9009%2F_ah%2Fimg%2FRYCF7Ty7wODp9R-N_QIWYA%3D%3D%3Ds200" class="img">
При первом просмотре новостной ленты понравившегося пользователя я вижу, что FB ударил по моему серверу для изображения:
INFO 2010-11-14 21:33:17,701 dev_appserver.py:3283] "GET /_ah/img/RYCF7Ty7wODp9R-N_QIWYA%3D%3D%3Ds200 HTTP/1.1" 500 -
Очевидно, что существует проблема кодирования URL со знаком равенства в URL, но я не знаю, кто здесь виноват.
- Должен ли FB быть эскалацией% 3D перед тем, как перезвонить на мой сервер для изображения?
- GAE неправильно обрабатывает закодированный URL?
- Должен ли я как-то кодировать URL в теге Open Graph? (Я пробовал urllib.quote-с его же результатами.)
Чтобы сделать вещи более запутанными, Facebook URL Linter правильно извлекает изображение. Также, если вы делите FB на странице, предварительный просмотр будет отображаться правильно. Это наводит меня на мысль, что это ошибка скрипта safe_image.php, с которым FB передает / кэширует изображение.