2013-05-09 182 views
2

每次運行這個腳本時,它都會給我一個不同的訪問令牌。我認爲訪問令牌對用戶來說是唯一的。此外,爲什麼這個腳本如此不可靠,失敗了一半。Facebook PHP SDK提取訪問令牌

My Facebook Access Token Page

下面是代碼:

<?php 
require 'lib/facebook.php'; 
require_once('C:\inetpub\storeboard.com\linkedin\extract_data.php'); 

$facebook = new Facebook(array(
    'appId' => FACEBOOK_APPID, 
    'secret' => FACEBOOK_APP_SECRET 
)); 

$user = $facebook->getUser(); 

if ($user) { 
    try { 
    // Proceed knowing you have a logged in user who's authenticated. 
    $user_profile = $facebook->api('/me'); 
    } catch (FacebookApiException $e) { 
    echo '<pre>'.htmlspecialchars(print_r($e, true)).'</pre>'; 
    $user = null; 
    } 
} 

$access_token = $facebook->getAccessToken(); 
if (isset($access_token)) { 
    echo $access_token; 
    //header('Location: http://www.'.APP_ROOT_DOMAIN.'/facebook/save_token.asp?nToken='.$access_token); 
} 

?> 

有我切出從原稿所需代碼:http://developers.facebook.com/blog/post/534/ 還是我失去了一些東西。

require_once('C:\inetpub\storeboard.com\linkedin\extract_data.php'); 

這行代碼只是從數據庫中提取APPID和APPSECRET。

我是一個完整的初學者,當涉及到PHP,所以任何幫助將不勝感激。

非常感謝!

+5

用戶訪問令牌的過期時間大約爲2小時,調用並不總是爲您提供新令牌,但如果過期,您將獲得新令牌。 – 2013-05-09 19:32:41

回答

0

你不需要用令牌發揮得到簡單的身份驗證:

後你得到Facebook的API實例:

$facebook = new Facebook(array(
    'appId' => FACEBOOK_APPID, 
    'secret' => FACEBOOK_APP_SECRET 
)); 

如果您使用我的API - 獲取用戶的個人資料:

$user_profile = $facebook->api('/me'); 

然後從中獲取電子郵件:

$email = $user_profile['email']; 

此時您檢查電子郵件在您的數據庫中是否有效 - 如果是,請啓動用戶會話,然後您就可以開始使用了。