0

Я пытаюсь разработать букмарклет, который сбрасывает текущую веб-страницу пользователя и сохраняет некоторые данные, извлеченные из него. На моем собственном веб-сайте мои пользователи регистрируются через API Facebook.Использование Facebook API через букмарклет

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

Указанный URL не принадлежит приложению.

Я новичок в этом, но, по-видимому, это потому, что текущая страница, к которой обращается букмарклет, не соответствует моему собственному домену?

Я запускаю javascript из внешнего файла, который is, размещенный на этом домене - этого должно быть недостаточно?

В качестве альтернативы, как я могу получить адрес этого? К сожалению, я не могу предложить свои собственные функции управления аккаунтами и полагаюсь на Facebook для моего управления пользователями.

Любые объяснения и креативные идеи приветствуются.

+0

_ «Я бегу JavaScript из внешнего файла, размещенного на этом домене - следует, что не хватает ? _ _ Нет. Потому что это только где вы _load_ сценарий, но он получает _executed_ в контексте текущего документа. – CBroe

+0

Вижу, спасибо. Может быть, мне нужно как-то очистить данные, открыть новую вкладку в моем домене (тьфу) и отправить оттуда? Надеюсь, кто-то предложит нечто более элегантное. –

ответ

0

Решение состоит в том, чтобы разместить шаг входа в свой домен внутри iframe на текущей странице или на новой вкладке или в новом всплывающем окне. Все равно было бы слишком неуверенно.

Возможные шаги:

  1. Bookmarklet бежит и царапины данных.
  2. Закладка создает iframe с src = "http: //yourdomain.com/bookmarklet-widget? Data = ...."
  3. Если вы уже не вошли в систему, на странице содержимого виджета сначала необходимо выполнить шаг входа.

Если данные должны быть отправлены в большой форме с помощью GET, вы можете использовать POST. Этапы были бы такими, как

  1. Данные прокладки и царапины.
  2. Закладка создает пустой iframe с именем типа «mywidgetframe».
  3. Закладок создает форму с методом = post target = mywidgetframe и action = "http://yourdomain.com/bookmarklet-widget"
  4. Закладка предоставляет форму.
  5. Если вы еще не вошли в систему, на странице содержимого виджета сначала необходимо выполнить шаг входа в систему.

Если вам нужна прямая связь между iframe/окна и текущей родительской страницы, проверьте http://enable-cors.org/

+0

Спасибо, что это было очень полезно. Я также нашел следующую ссылку полезной http://kathrynbrisbin.blogspot.com/2010/01/how-to-create-bookmarklet-like.html –

+0

Ваша ссылка заставила меня заметить ошибку, которую я сделал. Ссылка, которую я разделяю, не связана с межсайтовой связью iframe.Речь идет о возможности межсайтового AJAX. Для межсайтового iframe comm проверьте функцию «postMessage». В той ссылке, которую вы поделили, он использует устаревшую технику в «giftyHandleMessage». Для очень простых случаев это может быть хорошо. У этого есть преимущество работы в старых браузерах, но у него есть и недостатки, такие как потенциально нарушение веб-страниц, которые используют хэш-фрагмент для хранения состояния. –

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