Facebook JQuery запрос разрешения AJAX? - PullRequest
0 голосов
/ 05 мая 2011

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

Есть ли способ загрузить диалоговое окно с разрешениями в стиле всплывающего окна (не в новом окне ... jquery.load?) И использовать страницу сценария в качестве моего URI обратного вызова и опубликовать мои данные без перезагрузки вкладки? Я сделал это, если с обычными формами, но нам нужно взять имя / pic / email / bday из FB, чтобы попасть в базу данных.

Любая помощь, даже толчок в правильном направлении, была бы очень признательна!

/ ** ОБНОВЛЕНО ** /

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

$("#submit").live('click',function() {
    if (someErrors === true) {
        // handle errors
    } else {
        FB.login(function(response) {
            if (response.session) {
                if (response.perms) {
                    FB.api('/me', function(response) {
                        // vars: response.session.uid, response.name, response.email, response.birthday, etc
                        // serialize data here for post
                        $.post("process.php",formData,function(data) {
                            if (data.error) { 
                                // send json encoded error messages back to retrieve here like below:
                                // PHP: echo json_encode(array("error"=>"fail"));
                            } else {
                                /**
                                send data back json encoded:
                                PHP: echo json_encode(array("yourData"=>"{$yourData}","fb_id"=>"{$fb_id}","name"=>"{$name}"));
                                Now we have data like:
                                var profile = 'http://www.facebook.com/profile.php?id='+data.fb_id;
                                var image = '<img src="http://graph.facebook.com/'+data.fb_id+'/picture" />';
                                var yourData = data.yourData;
                                **/
                            }
                        }, "json");
                    });
                } else {
                    // more errors
                }
            } else {
                // and more errors
            }
        }, {perms:'email,user_birthday'}); // request your specific permissions here
    }
    return false;
});

Ответы [ 2 ]

1 голос
/ 05 мая 2011

Я должен был сделать то же самое. Я придумал это:

$("#fb_login").click(function(){

            FB.login(function(response) {
                    if (response.session) 
                    {
                        if (response.perms)
                        {
                              //alert("logged in..granted");
                             var uid = FB.getSession().uid;
                         FB.api(
                        {
                             method: 'fql.query',
                             query: 'SELECT name,email,pic FROM user WHERE uid=' + uid
                        },
                        function(response) {
                         var user = response[0];
                              $.get("addUser.php", { name: user.name, fbid: uid ,email: user.email }, function(data){
                              // ajax call to addUser.php to insert into database.


                            } );
                            }
                            );
                        } 
                        else 
                        {
                            // alert("Since You Have Not Granted Permissions For Accessing E-mails, You Can't register for any of the events.");

                        }
                    }
                    else
                    {
                         //alert("Not Logged In");
                    }
}, {perms:'publish_stream,email'}); // the extended permissions have to be specified here.

Вы можете изменить приведенный выше скрипт в соответствии с вашими изменениями. :)

1 голос
/ 05 мая 2011

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

И для уточнения под всплывающим окном я имею в виду форму, показанную в документации по аутентификации : FB auth dialog

Вы можете запустить это всплывающее окно, когда пользователь отправляет форму, например:

$('#submit_btn').click(function() // could also listen to the .submit() event
{
    // show popup
    FB.login(function(response)
    {
        // use FB methods to get data you want, 
        // attach it to valid input fields

        // submit form
        $('#form').submit();
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...