Как запросить у пользователя доступ к идентификатору пользователя на простой вкладке iframe?

Я знаю, что здесь есть много вопросов и ответов по этому поводу, но я не могу их понять, потому что они не показывают полные примеры кода или предназначены для чего-то другого, чем то, что я пытаюсь сделать.

У меня есть простая тестовая вкладка facebook. Не приложение для холста. Я хочу иметь возможность получить идентификатор пользователя, но должен сделать так, чтобы он запрашивал у них доступ к этой информации, прежде чем она появится в подписанном запросе.

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

Спасибо

Изменить: я хотел добавить, что только что понял свою проблему, но на самом деле это не ответ на этот вопрос. Я понял, как получить идентификатор пользователя, не спрашивая у пользователя разрешения на доступ к его профилю. Это было так же просто, как добавить этот код на страницу, и он работает одинаково во вкладках и приложениях на основе холста. getUser() сам по себе возвращает 0, но поскольку пользователь уже вошел в систему, чтобы увидеть этот контент, когда getUser() возвращает 0, тогда код просто получает идентификатор пользователя из метода API. Теперь, когда я, наконец, понял это, это кажется простым.

$session = $facebook->getUser();

if (!$session) {

    $url = $facebook->getLoginUrl(array(
        'canvas' => 1,
        'fbconnect' => 0
    ));

    echo "<script type='text/javascript'>top.location.href = '$url';</script>";

} else {

    try {

        $uid = $facebook->getUser();
        $me = $facebook->api('/me');

        $updated = date("l, F j, Y", strtotime($me['updated_time']));

        echo "Hello " . $me['name'] . "<br />";
        echo "You last updated your profile on " . $updated;

    } catch (FacebookApiException $e) {

        echo "Error:" . print_r($e, true);

    }
}

Я все еще хотел бы знать, есть ли способ сделать так, чтобы диалоговое окно расширенных разрешений отображалось для приложения с вкладками, поэтому было бы неплохо увидеть решения для php sdk.


person isimmons    schedule 25.02.2012    source источник


Ответы (2)


вам нужно попросить их разрешить вашему приложению извлекать данные о пользователе

это можно сделать с помощью функции JS SDK FB.login(). вы можете получить более подробную информацию в документации facebook: http://developers.facebook.com/docs/reference/javascript/FB.login/

обратите внимание, что всплывающее окно можно открыть только по событиям mouseclick или keyup, иначе блокировщики всплывающих окон заблокируют его.

вам также нужно будет установить домен и URL-адрес сайта для приложения на сайте разработчиков и инициализировать библиотеку facebook js (параграф загрузки в - http://developers.facebook.com/docs/reference/javascript/)

<div onclick="login();">click here to login</div>

<script type="text/javascript">
function afterLogin(){
   alert("user logged");
}

function login(){
    FB.getLoginStatus(function(response){
        if(response.status=="connected")
        {
            afterLogin();
        } else {
            FB.login(function(response){
                if(response.status=="connected")
                {
                afterLogin();
                }
            });
        }
    });
}
</script>
person Yaron U.    schedule 25.02.2012
comment
Спасибо Yaron Uliel, я хочу сделать это с помощью php sdk, если это возможно. Я собираюсь отредактировать вопрос, потому что, как выясняется, мне на самом деле не нужно, чтобы пользователь разрешал доступ к приложению для получения идентификатора пользователя. В Интернете есть много запутанной полунаписанной информации по этим темам, поэтому у меня сложилось впечатление, что мне нужно получить разрешение пользователя, чтобы получить его идентификатор пользователя. Но мне только что удалось это выяснить. - person isimmons; 25.02.2012

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

могу ошибаться :)

person jribeiro    schedule 25.02.2012
comment
Кажется, этот человек пытается делать то же, что и я, но у меня та же проблема, что и у него. stackoverflow.com/questions/7278378 / Я получаю логотип facebook при нажатии на ссылку для входа, но не вижу, как человек решил свою проблему. Я использую php sdk, а не javascript, поэтому часть этой ссылки о javascript здесь не применяется. - person isimmons; 25.02.2012
comment
Я добавил приветственный тест на facebook в качестве приложения на основе холста, и он ведет себя точно так же, но с большим iframe, поэтому, возможно, если я смогу выяснить, как запрашивать у пользователей доступ к идентификатору пользователя через холст, тогда я могу попытаться применить тот же код на вкладке. - person isimmons; 25.02.2012