top.location с Facebook = нулевой или неопределенный - PullRequest
0 голосов
/ 10 февраля 2012

Я пытаюсь сделать несколько примеров тестирования с Facebook и Flash (используя библиотеку Adobe Facebook AS3).Я следовал за примерами, расположенными по адресу http://www.adobe.com/devnet/facebook/articles/flex_fbgraph_intro.html

Все шло действительно хорошо, и я перешел к четвертой части процесса, и здесь все пошло на спад.Согласно этому документу, вы должны иметь возможность проверить, размещен ли ваш Flash-объект через Facebook или через ваш собственный сайт.

Вы делаете это, проверяя top.location (либо через JavaScript, либо через ExternalInterface.callметод в Actionscript).Однако, когда я делаю это, все, что я получаю, не определено.Я также пробовал разные вещи: -

Top.location.toString() = undefined
Window.location.toString() = http://local.evanine.com:8080/userstatus/
Window.Top.toString() = [object DOMWindow]
Top.document = undefined
getPage() = Test 8:- undefined

getPage () - это функция Javascript, вызываемая через ExternalInterface.call, и все, что она делает, это возвращает top.location.href

Однако, еслиЯ перехожу к тому же объекту Flash на своем собственном сайте, затем он отображает правильную информацию, он отображает ее только при внедрении в iFrame внутри Facebook.

Итак, наконец, на мой вопрос :)
Поскольку Facebook требует разработчиков приложенийиспользовать SSL, я вижу это, потому что в настоящее время у меня нет сертификата SSL на моем сервере?Это вещь безопасности?

1 Ответ

2 голосов
/ 10 февраля 2012

Это не проблема SSL, это связано с той же политикой происхождения в браузере. Это не позволит IFRAME (или вашему приложению для холста) увидеть, на какой странице находится пользователь. Тем не менее, вы знаете достаточно, чтобы выяснить, находитесь ли вы в IFRAME, если это правда:

top.location.href === location.href

По логике, top.location.href вернет undefined, как и должно быть в IFRAME. Помните, что вам не нужно знать, что является верхним URL, просто если он принадлежит вам или нет, что вы можете выяснить из этого сравнения.

EDIT:

Если вы хотите знать, находится ли он в пределах FB, вы можете сделать это:

window.name === "iframe_canvas"
...