2015-06-02 2 views
1

Я работаю над приложением, которое создает аватар, создает изображение на сервере с аватара base64, а затем показывает кнопку общего доступа для Facebook, чтобы разделить этот аватар, только что созданный.Facebook sharer: только что созданное

Пользовательская кнопка совместного доступа вызывает текущую страницу с дополнительным параметром URL, содержащим имя файла аватара. Когда этот параметр установлен (когда Facebook обходит его с помощью URL-адреса общего доступа), я создаю теги og в голове с указанием пути к изображению, указанному в параметре URL.

Нет проблем с этим, все в порядке.

Но проблема в том, что диалог с предварительным просмотром не показывает аватар, тогда как он IS создан на сервере! Мне нужно открыть диалог несколько раз, чтобы увидеть аватар.(открыть, нет аватара, отменить ... открыть, нет аватара, отменить ... открыть, ай! Аватар, наконец!).

Такая же проблема с отладчиком URL-адреса Facebook. В первый раз он не находит аватар (тогда как он существует), второй или третий раз, и он находит его.

Как аватар создан, не следует ли показывать предварительный просмотр аватара? Требуется ли серверу некоторое время после создания изображения, чтобы «включить» его? (Сервер является Nginx)

enter image description here

+1

Это скорее не проблема с самим созданием динамического образа, а с конкретным URL-адресом с параметром, который ранее не сканировался. И легким обходным путем для этого является [указать изображение _dimensions_ через метатеги OG также] (http://stackoverflow.com/a/30361572/1427878). – CBroe

ответ

0

Я рекомендую сделав запрос силу AJAX Facebook, чтобы обновить изображение с их стороны при загрузке страницы, которые содержат вашу ссылку акций:

$.post(
    'https://graph.facebook.com', 
    { 
     id: 'http://www.website.com/pagetoscrape', 
     scrape: true 
    }, 
    function(response){ 
     // or you could call the dialog box at this point 
    } 
); 
+0

Я попытался вызвать это непосредственно перед открытием диалога совместного доступа, но моя консоль говорит: ** XMLHttpRequest не может загрузить https://graph.facebook.com/. Запрос был перенаправлен на URL-адрес ('about: blank'), который имеет запрещенную схему для запросов с кросс-началом. ** При вызове во время обхода Facebook он, похоже, не разрешает проблему (но без ошибок, предварительный просмотр работает, как и раньше: без аватара). – Ecorce

+0

Странно, я просто запустил его в консоли, и он отлично работает. и он возвращает JSON в качестве ответа, а не о: blank – Luke

0

Я побежала это вчера ошибка это моя попытка

$.post(
    'https://graph.facebook.com', 
    { 
     id: current+"/share/"+id, 
     scrape: true 
    }, 
    function(response){ 
     //alert('scrap') 
     setTimeout(function(){ 
      $("#facebook").attr("href",url_facebook); 
     }, 800) 
     ; 
    } 
); 

Facebook занимает немного времени, чтобы получить информацию, так вот почему я использую SetTimeout, чтобы дать немного перерыв для facebook, чтобы поймать информацию

Смежные вопросы