PHP cURL для проверки входа в API Facebook access_token на сервере? - PullRequest
0 голосов
/ 26 февраля 2019

Может ли кто-нибудь поделиться рабочим примером того, как проверить на моем PHP-сервере, используя cURL Facebook access_token, который я получил из браузера, чтобы я мог проверить достоверность данных для входа в систему из браузера, а затем безопасно создать сеанс для моего пользователя намой сервер?

Чтобы просмотреть, я хочу выполнить следующие шаги:

  1. Пользователь нажимает «Продолжить с Facebook» в браузере иполучает access_token.
  2. Я отправляю это на свой PHP-сервер.
  3. Сервер отправляет запрос cURL в Facebook для проверки пользователя access_token.
  4. Если access_token действителен, тосоздать сеанс для пользователя на моем сервере.

У меня есть собственное приложение с электронной почтой, логином Google и Facebook.Я ценю любую помощь, спасибо.

1 Ответ

0 голосов
/ 26 февраля 2019

Через некоторое время я получил работающий PHP-скрипт.

Просто замените отсутствующие значения переменных, и оно должно работать.Также убедитесь, что на вашем PHP-сервере работает cURL с помощью phpinfo () или каким-либо другим способом;

<?php

///////////////////////////////////////
// prep Facebook verification
///////////////////////////////////////

// sanitize login data
$_POST['facebook_access_token'] = filter_var($_POST['facebook_access_token'], FILTER_SANITIZE_STRING);

// set variables
$facebook_user_access_token = $_POST['facebook_access_token'];
$my_facebook_app_id = 'REPLACE';
$my_facebook_app_secret = 'REPLACE';
$facebook_application = 'REPLACE'; // in my case 'domain.com', as set up in Facebook

///////////////////////////////////////
// get facebook access token
///////////////////////////////////////
$curl_facebook1 = curl_init(); // start curl
$url = "https://graph.facebook.com/oauth/access_token?client_id=".$my_facebook_app_id."&client_secret=".$my_facebook_app_secret."&grant_type=client_credentials"; // set url and parameters
curl_setopt($curl_facebook1, CURLOPT_URL, $url); // set the url variable to curl
curl_setopt($curl_facebook1, CURLOPT_RETURNTRANSFER, true); // return output as string
$output = curl_exec($curl_facebook1); // execute curl call
curl_close($curl_facebook1); // close curl
$decode_output = json_decode($output, true); // decode the response (without true this will crash)

// store access_token
$facebook_access_token = $decode_output['access_token'];

///////////////////////////////////////
// verify my access was legitimate
///////////////////////////////////////
$curl_facebook2 = curl_init(); // start curl
$url = "https://graph.facebook.com/debug_token?input_token=".$facebook_user_access_token."&access_token=".$facebook_access_token; // set url and parameters
curl_setopt($curl_facebook2, CURLOPT_URL, $url); // set the url variable to curl
curl_setopt($curl_facebook2, CURLOPT_RETURNTRANSFER, true); // return output as string
$output2 = curl_exec($curl_facebook2); // execute curl call
curl_close($curl_facebook2); // close curl
$decode_output2 = json_decode($output2, true); // decode the response (without true this will crash)

// test browser and Facebook variables match for security
if ($my_facebook_app_id == $decode_output2['data']['app_id'] && $decode_output2['data']['application'] == $facebook_application && $decode_output2['data']['is_valid'] == true) {
    echo 'Success. Login is valid.';
}
else {
    echo 'Error.';
}

?>

Особая благодарность https://stackoverflow.com/a/16092226/6252345

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...