Помогите лучше понять oauth-код Facebook - PullRequest
0 голосов
/ 17 сентября 2010

Я новичок в разработке Facebook и PHP.Я только начал сегодня, и я хотел бы знать, что делает следующий фрагмент кода,

<?php

define('FACEBOOK_APP_ID', '123423');  
define('FACEBOOK_SECRET', '3eesewee3e');  

function get_facebook_cookie($app_id, $application_secret) {  
  $args = array();  
  parse_str(trim($_COOKIE['fbs_' . $app_id], '\\"'), $args); //Why??  
  ksort($args);  
  $payload = '';  
  foreach ($args as $key => $value) {        
    if ($key != 'sig') {//Why checking not equals to 'sig'  
      $payload .= $key . '=' . $value;  
    }  
  }  
  if (md5($payload . $application_secret) != $args['sig']) {//why is this checking  
    return null;  
  }  
  return $args;  
}  

$cookie = get_facebook_cookie(FACEBOOK_APP_ID, FACEBOOK_SECRET);  

?>

Я вроде понял функции PHP и их использование.Я хотел бы знать, почему это сделано таким образом?

Я хотел бы знать объяснения строк с комментариями // почему.Я не совсем уверен, что происходит во время этого общения и почему мы проводим такие проверки и т. Д.

Спасибо за ваше время.

С уважением, Абхишек

1 Ответ

0 голосов
/ 17 сентября 2010

Первая запрашиваемая строка заполняет $args ключами / значениями из cookie.

Вторая запрашиваемая строка находится в цикле клавиш $args. Он игнорирует 'sig', потому что это подпись и не будет хешироваться.

Третья запрашиваемая строка проверяет, соответствует ли хэш полезной нагрузки подписи.

По сути, этот код выполняет синтаксический анализ файла cookie, сортировку ключей в стандартном порядке, получение хэша отсортированных ключей и сравнение этого хэша с подписью. Если подпись не соответствует хешу, то файл cookie был подделан.

Массив $args необходимо отсортировать с помощью стандартной функции сортировки, поскольку порядок данных влияет на хешированное значение.

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