2013-02-08 86 views
1

我想拉生日,以獲得用戶登錄我的網頁與Facebook的年齡。我一直試圖用我的個人資料登錄,但它給了我錯誤的年齡。下面是我在process_facebook.php代碼(我有一個叫做「年齡」字段接受一個int數據庫):Facebook的權限「生日」給我錯誤的年齡

function getAge($birthday) { 
     $dt = strtotime($birthday); 
     // convert the birthday to a standard format (UNIX epoch) 
     $a = gmdate('Y') - gmdate('Y',$dt); 
     // find the difference of years 
     $a = (int)$a; 
     return $a; // return the age. 
    } 

在典型process_facebook.php框架,我有這樣的:

$birthday = $me['birthday']; 


$age = getAge($birthday); 

我知道我的生日是1987年1月4日在Facebook上(應該在$生日中以字符串「01/04/1987」的形式提取)。但是當我的數據庫中的字段填充時,它的編號爲43.

我試着運行代碼,將它分別作爲$生日的「01/04/1987」運行,並且它吐出了26個罰款。

我不確定發生了什麼事(Facebook可以通過我不正確的生日?)感謝您的幫助提前。

+4

自1970年以來已經43年了......這意味着strtotime()失敗並返回0,即1970年1月1日,所以你的43實際上是一個「適當」的年齡。例如檢查什麼劇本是真的返回,爲什麼strtotime窒息它。 – 2013-02-08 19:14:46

+0

對不起,但我怎麼會看到這個變量?它在process_facebook.php中;如果我打印變量,它出現在哪裏?或者我如何在瀏覽器控制檯中查看它,等等...... – user1072337 2013-02-08 19:53:54

+0

堅持'var_dump($生日); die()'到你的getAge()函數中,這樣腳本就會吐出Facebook發送的內容,然後中止。 – 2013-02-08 20:50:43

回答

0

如果您確實已授予您的應用user_birthday權限,請登錄Graph API Explorer。在右上角的下拉列表中選擇您的應用程序,並填寫文本框與此

me?fields=birthday 

如果在輸出中沒有birthday場,您可以點擊獲取訪問令牌看你有沒有授予您的應用程序的權限。

我認爲你還沒有授予你的應用程序的權限user_birthday authing和$me['birthday']是空的。這就是爲什麼自1970年以來計算的年齡是43歲,Marc B在他的評論中指出。要檢查,只需使用var_dump($me['birthday'])

並務必檢查this comment

+0

這是個問題。非常感謝你的建議。好人。 – user1072337 2013-02-08 21:31:43