Может ли маркер доступа, возвращаемый Facebook на Javascript SDK, работать на стороне сервера с PHP SDK? - PullRequest
6 голосов
/ 22 июля 2011

Я создаю веб-сайт, который использует Facebook Connect. Я проверяю подлинность пользователей на стороне клиента с помощью javascript SDK и вызываю метод AJAX на моем сервере каждый раз, когда пользователь входит в систему, чтобы проверить, известен ли пользователь моему приложению и если пользователь новичок, чтобы сохранить свой FBID в моей базе данных зарегистрировать их как нового пользователя.

Мой вопрос таков: можно ли использовать токен доступа, возвращаемый Facebook для Javascript SDK, на стороне сервера (например, с PHP SDK)? Могу ли я отправить строку токена доступа на сервер с помощью вызова AJAX, сохранить ее в своей базе данных (вместе с отметкой времени, чтобы я знал, как долго она действительна), а затем использовать ее для выполнения вызовов на стороне API графического API? Это даже логично?

Ответы [ 2 ]

3 голосов
/ 02 августа 2011

Использование Jquery:

//Set an error message
var oops = ("Put your something went wrong message here.");
//Function to post the data to the server
    function save(uid, accessToken){
        $.post("../foo/bar", { uid: uid, access_token: accessToken, etc, etc }, function(data){
            alert("Successfully connected to Facebook.");
            location.reload();
        }, "text");
    }
    function handler(x){
        if (x.authResponse){
            var token = x.authResponse.accessToken;
            var uid   = x.authResponse.id;
            FB.api("/me/accounts", {access_token: token},
            function(response){
                if(response.data.length == 0) {
//Regular facebook user with one account (profile)
                    save(uid, token);
                }else{
//Handle multiple accounts (if you want access to pages, groups, etc)
                }
            });
        }else{
            alert(oops);
        }
    }
    FB.login(handler, {scope: 'The list of permissions you are requesting goes here'});

Любые предложения по улучшению всегда приветствуются.

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

Да, это должно работать. Посмотрите на этот вопрос: Как правильно обрабатывать токен сеанса и доступа с помощью Facebook PHP SDK 3.0?

Это обходной путь для старого JS и нового PHP SDK. В моем приложении я отправляю токен доступа, сгенерированный JS SDK, через форму в мой PHP. Я не сомневаюсь, что это также работает, посылая токен доступа через ajax!

...