Что такое новый SDK эквивалент FB.Facebook.get_isInCanvas - PullRequest
0 голосов
/ 05 января 2012

Попытка найти новый javascript SDK Facebook, эквивалентный:

FB.Facebook.get_isInCanvas

Есть ли способ PHP SDK для этого вызова?

Мне нужно проверить, если внутри холста, и проверки заголовка и подписанного запроса не определяют, находится ли пользователь в Facebook в Приложении ... если у меня нет правильного способа проверки ...

Ответы [ 2 ]

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

FB._inCanvas - это то, что вы хотите от Facebook JS SDK, однако я обнаружил, что иногда он не всегда установлен, поэтому давайте посмотрим, как они сами выполняют проверку, и скопируйте:

var _inCanvas: (
  (window.location.search.indexOf('fb_sig_in_iframe=1') > -1) ||
  (window.location.search.indexOf('session=') > -1)
);

См. https://github.com/facebook/facebook-js-sdk/blob/master/src/core/prelude.js#L71

UPDATE Более новая версия этого:

((window.location.search.indexOf('fb_sig_in_iframe=1')>-1)||
(window.location.search.indexOf('session=')>-1) ||
(window.location.search.indexOf('signed_request=')>-1) ||
(window.name.indexOf('iframe_canvas')>-1) ||
(window.name.indexOf('app_runner')>-1))
0 голосов
/ 05 января 2012

Используя PHP-SDK, вы можете предполагать, что приложение работает на холсте, если у вас есть signed_request в вашем $_REQUEST / $_POST. Не совсем безопасно, но в большинстве случаев можно предположить, что это так ...

JS-SDK может сказать, что он не работает на холсте наверняка, только отметив window.top == window не очень полезно, если вам нужно знать, что вы находитесь на холсте, а не просто чьим-то кадром.

Обновление:
Только что проверил, и есть лучший вариант в JS-SDK, чтобы проверить, работаете ли вы на холсте, но я не уверен, что это поведение не изменится в будущем. Вы можете использовать что-то вроде этого:

var pageInfo = FB.Canvas.getPageInfo();
var isInCanvas = (pageInfo && pageInfo.clientWidth == 0);
...