Facebook Войдите в систему с помощью JS и подтвердите с помощью PHP — Безопасно?

Я использую Facebook Javascript SDK для входа в систему и проверяю его с помощью PHP Graph SDK v5.x

Вот JS:

logInWithFacebook = function() {
    FB.login(function(response) {
        if (response.authResponse) {

            console.log (response.authResponse);

            $.ajax({
                type: 'POST',
                url: 'facebook-validate-php-sdk.php',
                data: response.authResponse,
                success: function(response){

                    console.log (response);
                    //Success

                }
            });

        } else {

            alert('User canceled login or did not fully authorize.');

        }
    }, {scope: 'user_link, email'}); 

    return false;
};

window.fbAsyncInit = function() {
    FB.init({
        appId: 'xxx',
        cookie: false,
        version: 'v9.0'
    });
};

Вот PHP, который проверяет:

require_once 'php-graph-sdk-5.x/autoload.php';

$fb = new FacebookFacebook([
    'app_id' => 'xxx',
    'app_secret' => 'xxx',
    'default_graph_version' => 'v9.0',
]);

//$helper = $fb->getJavaScriptHelper();

try {
    //$accessToken = $helper->getAccessToken();
    $accessToken = $_POST['accessToken'];
}catch(FacebookExceptionResponseException $e) {
    // When Graph returns an error
    echo 'Graph returned an error: ' . $e->getMessage();
    exit;
} catch(FacebookExceptionSDKException $e) {
    // When validation fails or other local issues
    echo 'Facebook SDK returned an error: ' . $e->getMessage();
    exit;
}

if (! isset($accessToken)) {
    echo 'No OAuth data could be obtained.';
    exit;
}

// User is logged in!
//Get Data

try {
    // Returns a `FacebookResponse` object
    $response = $fb->get('/me?fields=name,first_name,last_name,email,link,gender,picture.type(large),birthday', $accessToken);
} catch(FacebookExceptionResponseException $e) {
    echo 'Graph returned an error: ' . $e->getMessage();
    exit;
} catch(FacebookExceptionSDKException $e) {
    echo 'Facebook SDK returned an error: ' . $e->getMessage();
    exit;
}

$user = $response->getGraphUser();

var_dump ($user);

Как видите, я решил передать токен доступа с помощью POST вместо файла cookie. Поскольку я не собираюсь создавать сеанс по своему проекту, я решил, что это будет лучше всего. Было бы это правильным предположением? Этот код безопасен? Есть какие-нибудь советы или мысли?

0

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *