Как запросить у пользователя доступ к идентификатору пользователя на простой вкладке iframe? - PullRequest
1 голос
/ 25 февраля 2012

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

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

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

Спасибо

Edit: Я хотел добавить, что я только что понял свою проблему, но это не совсем ответ на этот вопрос. Я понял, как получить идентификатор пользователя, не спрашивая у пользователя разрешения на доступ к его профилю. Это было так же просто, как добавить этот код на страницу, и он работает в приложении с вкладками и холстами одинаково. 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.

Ответы [ 2 ]

0 голосов
/ 25 февраля 2012

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

, это можно сделать с помощью функции 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>
0 голосов
/ 25 февраля 2012

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

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

...