Как я могу перенаправить все http на страницы https facebook? - PullRequest
1 голос
/ 18 января 2012

Я хочу заставить все родительские окна моего приложения из этого URL: http://apps.facebook.com/app_name/ к этому: https://apps.facebook.com/app_name/

(http to https)

Как я могу это сделать? Спасибо!

Ответы [ 2 ]

1 голос
/ 18 января 2012

Вы можете использовать что-то подобное (имейте в виду, что это оставит ваше приложение без signed_request):

if (document.location.protocol=='http:'){
  document.location.protocol = 'https:';
}

Если вы хотите, чтобы родительский фрейм (сам Facebook) был переключен на HTTPS а также вам нужно знать URL вашей страницы в приложении:

if (document.location.protocol=='http:'){
  window.top.location = 'https://YOUR_APPLICATION_PAGE_URL'
}

Вы, вероятно, знаете шаблон URL для своего приложения и знаете Canvas URL его,так что-то вроде этого может подойти:

if (document.location.protocol=='http:'){
  var applicationUrl = 'https://facebook.com/example-application';
  var canvasURL = 'http://example.com/facebook-canvas';
  var currentAppPageUrl = (document.location+'').replace(canvasURL, applicationUrl);
  window.top.location = currentAppPageUrl;
}
0 голосов
/ 26 июня 2012

Приложение Canvas находится в вашем домене, а вершина - в домене Facebook, поэтому вызов window.top.location внутри приложения Facebook Canvas вызывает междоменный URL-доступ из iframe.

Все, что вам нужно, это перехватить исключение с помощью блока try catch.

if (document.location.protocol=='http:'){
    var applicationUrl = 'https://facebook.com/example-application';
    var canvasURL = location.protocol+'//'+location.host+location.pathname;
    var currentAppPageUrl = (document.location+'').replace(canvasURL, applicationUrl);
    try {
        window.top.location = currentAppPageUrl;
    } catch (e) {
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...