URL вкладки приложения Facebook - PullRequest
2 голосов
/ 16 января 2010

У меня есть приложение на Facebook, которое можно добавить на фан-страницы в виде вкладки. Приложение требует, чтобы пользователи проходили аутентификацию для его использования. Это может быть достигнуто с помощью requirelogin = 1 в ссылке, которая видна только пользователям, которые НЕ добавили приложение. Эта часть отлично работает.

Однако после того, как пользователь дал разрешение моему приложению из всплывающего окна dhtml, которое открывает requirelogin, я хочу перезагрузить вкладку. Для этого мне нужно, чтобы полный URL был включен в ссылку следующим образом:

<a href="http://www.facebook.com/pages/PAGE_NAME/PAGE_ID?v=app_APP_ID" requirelogin=1>Authorize</a>

Я не могу понять, как получить полный URL-адрес или, по крайней мере, PAGE_NAME для динамического создания этого URL-адреса. Похоже, приложение должно знать, где оно находится, без каких-либо специальных разрешений.

Ответы [ 4 ]

3 голосов
/ 19 июля 2011

Когда ваша вкладка загружена, API передает вам Подписанный запрос , который содержит, помимо прочего, массив page, содержащий id, liked & admin. Вы можете использовать это для динамического извлечения идентификатора страницы, который в данный момент вызывает ваш код.

2 голосов
/ 12 апреля 2010

Если у вас есть идентификатор страницы и приложение, это то, что вы делаете:

http://www.facebook.com/profile.php?id=PAGE_ID#v=app_APP_ID

Например:

http://www.facebook.com/profile.php?id=282955631557#v=app_278523304881
0 голосов
/ 08 мая 2012

Все вышеперечисленные ответы не будут работать (перенаправить вас только в поток страниц) или устарели. Лучшее решение, которое вы используете JS:

// called when like button, box, etc is rendered
FB.Event.subscribe("xfbml.render", function() { 

    // assigns click to that thing
    FB.Event.subscribe("edge.create", function(response) { 

        window.location.reload(); // reload frame only

    });
});

Вам также нужно будет загрузить и запустить JS SDK для facebook. Если вы не знаете, как это сделать, используйте это:

<script>
    document.onload = function(){

        (function(d){
            var js,id='facebook-jssdk';
            if(d.getElementById(id)){return;}
            js=d.createElement('script');
            js.id=id;js.async=true;js.src="//connect.facebook.net/pl_PL/all.js";
            d.getElementsByTagName('head')[0].appendChild(js);
        }(document));

        window.fbAsyncInit = function(){
            FB.init({
                appId  : <PASTE_YOUR_APP_ID_HERE>,
                status : true, // check login status
                cookie : true, // enable cookies to allow the server to access the session
                xfbml  : true  // parse XFBML
            });
            FB.Event.subscribe("xfbml.render", function() {
                FB.Event.subscribe("edge.create", function(response) {
                    window.location.reload();
                });
            });
        }
    }
</script>
0 голосов
/ 22 апреля 2012

В новой схеме # больше не работает. Нужно использовать

http://www.facebook.com/profile.php?id=PAGE_ID#v=app_APP_ID

Чтобы перенести параметры в приложение, оно должно быть в параметре под названием «app_data»

http://www.facebook.com/profile.php?id=PAGE_ID#v=app_APP_ID&app_data="..."

Чтобы передать несколько параметров, лучшая стратегия - закодировать app_data в Json.

...