FB PHP аутентификация - PullRequest
       3

FB PHP аутентификация

0 голосов
/ 23 мая 2011

Я нашел этот код здесь http://developers.facebook.com/docs/authentication/

<?php 

   $app_id = "YOUR_APP_ID";
   $app_secret = "YOUR_APP_SECRET";
   $my_url = "YOUR_URL";

   session_start();
   $code = $_REQUEST["code"];

   if(empty($code)) {
     $_SESSION['state'] = md5(uniqid(rand(), TRUE)); //CSRF protection
     $dialog_url = "http://www.facebook.com/dialog/oauth?client_id=" 
       . $app_id . "&redirect_uri=" . urlencode($my_url) . "&state="
       . $_SESSION['state'];

     echo("<script> top.location.href='" . $dialog_url . "'</script>");
   }

   if($_REQUEST['state'] == $_SESSION['state']) {
     $token_url = "https://graph.facebook.com/oauth/access_token?"
       . "client_id=" . $app_id . "&redirect_uri=" . urlencode($my_url)
       . "&client_secret=" . $app_secret . "&code=" . $code;

     $response = file_get_contents($token_url);
     $params = null;
     parse_str($response, $params);

     $graph_url = "https://graph.facebook.com/me?access_token=" 
       . $params[‘access_token’];

     $user = json_decode(file_get_contents($graph_url));
     echo("Hello " . $user->name);
   }
   else {
     echo("The state does not match. You may be a victim of CSRF.");
   }

?>

Я изменил секретный идентификатор приложения и URL-адрес приложения, я создал страницу с одним предложением HTML, загрузил ее на веб-сервер и получил страницу с ошибкой, не найденную. Кто-нибудь может мне помочь с этим? Также мне нужно что-нибудь включить?

Ответы [ 3 ]

2 голосов
/ 23 мая 2011

То, что вы пытаетесь сделать в своем коде, является своего рода обходным решением для того, что уже существует. Пожалуйста, используйте Facebook PHP SDK для вещей, которые вы пытаетесь прямо сейчас. Это намного облегчает задачу, и вы, вероятно, достигнете своей цели за меньшее время.

2 голосов
/ 23 мая 2011

Вам необходимо использовать Facebook SDK. Вот пример учебника, который отлично работает,

http://www.9lessons.info/2011/01/facebook-graph-api-connect-with-php-and.html

Я уверен, что это решит вашу проблему.

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

Вы должны использовать Facebook PHP SDK ( см. На github ). Это просто, чтобы иметь дело с входом пользователей в систему. Вот как это выглядит:

require 'facebook.php';
$facebook = new Facebook(...);

$user = $facebook->getUser();

Если пользователь вошел в систему, $user будет содержать его идентификатор Facebook. Но это не значит, что у вас есть действующий токен доступа для вызовов API: если он только что вышел из Facebook, $user не будет иметь значение null, но токен доступа больше не будет действительным.

Один из способов проверить, есть ли у вас действующий токен, - это попытаться сделать вызов API:

if ($user) {
  // The user is logged in
  try {
    $facebook->api('/me');
    // Here : API call succeeded, you have a valid access token
  } catch (FacebookApiException $e) {
    // Here : API call failed, you don't have a valid access token
    // you have to send him to $facebook->getLoginUrl()
    $user = null;
  }
} else {
  // The user is not logged
  // you have to send him to $facebook->getLoginUrl()
}

А затем, чтобы войти в систему пользователя или получить действительный токен доступа:

if (!$user) {
  // display link to $facebook->getLoginUrl();
}

Возможно, вы захотите проверить на примере PHP PHP SDK , чтобы получить полный поток, это хорошо документировано.

Надеюсь, это поможет.

...