簡體   English   中英

幫助更好地了解Facebook oauth代碼

[英]Help to understand Facebook oauth code better

我是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函數及其用法。 我想知道為什么要這樣嗎?

我想知道帶有注釋的行的解釋//為什么。 我不太確定在這次交流中會發生什么,以及我們為什么要進行此類檢查等。

謝謝你的時間。

問候,Abhishek

查詢的第一行用cookie中的鍵/值填充$args

第二條查詢行在$args鍵的循環中。 它忽略了'sig'因為這是一個簽名並且不會被散列。

第三條查詢行檢查有效負載的哈希值是否與簽名匹配。

基本上,這段代碼所做的是解析cookie,將密鑰按標准順序排序,對排序后的密鑰進行哈希處理,然后將該哈希與簽名進行比較。 如果簽名與哈希不匹配,則說明cookie已被篡改。

$args數組需要使用標准排序功能進行排序,因為數據的順序會影響哈希值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM