Резюме.. Моя проблема заключается в получении FB.ui с помощью метода share_open_graph, чтобы создать индивидуальный диалог общего доступа, содержащий различные названия, описания и изображения, основанные на действиях пользователя на странице.
Вопрос был моим первым, и у меня не было репутации, поэтому были удалены многочисленные ссылки, но (спасибо всем, кто дал мне преимущество), я смог спасти скриншоты, которые изначально отсутствовали.
EDIT: Мне пришлось просто использовать регулярное всплывающее окно с диалоговым окном share, но оно не идеально, но, по крайней мере, оно работает надежно. Чем больше я смотрел по сети, тем больше я обнаружил, что многие высокопоставленные респектабельные сайты все еще используют всплывающее сообщение, подобное этому, поэтому я решил, что в этом случае преимущества использования устаревшего решения перевешивают обширную работу по поиску правильного решения, я использовал https://developers.facebook.com/docs/sharing/reference/feed-dialog/v2.2 с динамическими подробностями, представленными через URL-запрос, который, по крайней мере, немного более актуальен, чем использование sharer.php, я был изначально глядя на Buzzfeed.
Моя страница:
У меня есть опрос. Десять вопросов, пять ответов на каждый, получается результат присвоения одного из пяти вариантов в качестве "результата". Все, что касается викторины, отлично работает. Результат втягивается, когда опрос завершается через Ajax/jQuery - это так, что в будущем я смогу построить интерфейс на основе PHP для других людей, чтобы управлять созданием викторин. Пока я счастливо предоставляю URL-адрес страницы в коде ниже, но, к сожалению, пока я не исправил эту проблему, я не могу публиковать ее публично, поэтому вы не можете получить к ней доступ!
Моя цель:
Когда будет показан результат викторины, у него также должны быть кнопки общего доступа Facebook и Twitter, которые были настроены для включения изображения, заголовка и описания, которые соответствуют результатам пользовательской викторины.
Кнопка Twitter была легко сделать динамически
Я просто использую jQuery для создания кнопки Twitter, используя тот же HTML, что и любой другой, с моим динамическим описанием, представленным как свойство data-text
, а затем вызываем twttr.widgets.load();
, чтобы активировать кнопку.
Кнопка Facebook Share - это проблема
- Я не могу добавить кнопку "обычного" общего доступа - для этого требуется только одно свойство, URL-адрес (не изменяется в результате теста).
- Я не могу изменить общие теги Open Graph, которые существуют на странице, хотя jQuery может это сделать, кеширование Facebook означает, что это бессмысленно. Кроме того, общие кнопки совместного доступа (FB/Twitter/G +) на каждой странице должны оставаться неизменными и всегда использовать теги OG по умолчанию.
Итак, я создаю ссылку и добавляю ее на страницу с помощью jQuery, а затем устанавливаю действие click trigger с помощью jQuery. Идентификатор приложения уже успешно установлен с блоком кода FB.init(). Это методы, которые я попытался использовать для триггера щелчка:
Попытка 1: FB.ui({ method: "feed" })
FB.ui({
method: 'feed',
name: "I got "+response.country+"! Which European are you destined to date?",
link: "http://advice.uk.match.com/quizzes/which-european-are-you-destined-date",
picture: response.image,
description: response.body
});
Основы работы - изображение, название и описание соответствуют результату викторины (в данном случае "французский" ) - НО диалог подачи не только устарел, но и значительно уступает Share (см. Ниже). Я бы хотел сделать это правильно.
Попытка 2: FB.ui({ method: "share" })
FB.ui({
method: 'share',
href: "http://advice.uk.match.com/quizzes/which-european-are-you-destined-date",
name: "I got "+response.country+"! Which European are you destined to date?",
picture: response.image,
description: response.body
});
В диалоговом окне Share отображается текущее значение, и вы можете увидеть улучшения в дизайне и функциональности по сравнению с устаревшим диалогом каналов. Но в этом базовом использовании это похоже на обычную кнопку общего доступа, и, несмотря на мои попытки предоставить дополнительную информацию, используется только URL-адрес, и общие теги Open Graph на странице предоставляют контент.
Попытка 3: FB.ui({ method: "share_open_graph" })
Кажется, это тот, который я должен использовать. Мне просто нужно разобраться, как!
* Я добавил: "quiz" как тип объекта для моего приложения (name: matchadviceuk).
* Я добавил: "Поделиться викториной" в качестве типа истории для моего приложения на основе опции "викторины" и существующего типа действия "Поделиться".
* Я добавил: соответствующий Open Graph prefix=""
контент в мое объявление <head>
Теперь функция click на кнопке выглядит следующим образом:
FB.ui({
method: 'share_open_graph',
action_type: 'matchadviceuk:share',
action_properties: JSON.stringify({
type: 'matchadviceuk:quiz',
url: "http://advice.uk.match.com/quizzes/which-european-are-you-destined-date",
title: "I got "+response.country+"! Which European are you destined to date?",
description: response.body,
image: response.image
})
});
После щелчка на кнопке появляется:
Итак, я изменил url
в приведенном выше коде на quiz
, и получим:
Это начинает иметь смысл - сама страница является статьей, и это не может измениться. Поэтому, возможно, я не хочу использовать этот новый тип объекта "викторины" вообще. Но если я вернусь в блок выше и просто изменил type
на matchadviceuk:article
, мы получим ту же ошибку, что и "опрос", которая не определена - на данный момент это делает нулевой смысл, поскольку тип объекта "викторины" теперь не упоминается нигде в коде! (Возможная жертва кэширования Facebook, что является дополнительным осложнением.)
И вот здесь я застрял вне всякой дополнительной идеи. Я даже попытался полностью удалить атрибуты type
и url
, надеясь, что Facebook может сделать свое дело, но нет.
Я еще не уверен, что мои усилия по добавлению типа объекта и типа истории в мое приложение были необходимы, но в любом случае я просто не могу заставить это работать. Пожалуйста, помогите!
Сравнить с:
It Buzzfeed, которые много делают такие викторины, и они на самом деле выполняют работу с использованием ссылки sharer.php на Facebook с динамическим контентом, поставляемым как часть строки запроса URL-адреса, и заставляя его открываться в новом окна вручную. Это уродливое, а не "официальное", а не как дружелюбное к пользователю, и я смею сказать, возможно, это проблемы с мобильным телефоном и планшетами. По всем этим причинам я бы предпочел сделать это правильно с помощью FB.ui - и не только это, но sharer.php находится в постоянном потоке "это или не устарело?" и даже официальная линия разработчиков FB (не может добавить ссылку из-за отсутствия репутации) - это то, что она не будет работать так долго.
Исследования:
Я выполнил тон поиска Googling и Stack Overflow. Ничто не соответствует моей проблеме (что меня удивляет, но у меня есть дополнительные ограничения, такие как необходимость выполнять всю эту обработку динамически без отдельных страниц с результатами PHP). Этот вопрос является единственным результатом для SO для "share_open_graph" и создает объект с FB.api, а затем публикует с FB.ui - звучит хорошо, кроме того, что это производит несколько сообщений в фид пользователя, что приведет к запрету со стороны Facebook. Этот пользователь смог опираться на PHP, где мне нужна чистая интерактивность на стороне клиента.