2010-08-02 45 views
0

我已經實現根據文檔,並能得到它來連接和顯示用戶ID下面的下面的代碼...與認證令牌Facebook連接API問題

<?php 

define('FACEBOOK_APP_ID', '87939462878'); 
define('FACEBOOK_SECRET', '1ab6346bc51329831998985aba200935'); 

function get_facebook_cookie($app_id, $application_secret) { 
    $args = array(); 
    parse_str(trim($_COOKIE['fbs_' . $app_id], '\\"'), $args); 
    ksort($args); 
    $payload = ''; 
    foreach ($args as $key => $value) { 
    if ($key != 'sig') { 
     $payload .= $key . '=' . $value; 
    } 
    } 
    if (md5($payload . $application_secret) != $args['sig']) { 
    return null; 
    } 
    return $args; 
} 

$cookie = get_facebook_cookie(FACEBOOK_APP_ID, FACEBOOK_SECRET); 

?> 

<?php if ($cookie) { ?> 
     Your user ID is <?= $cookie['uid'] ?> 
    <?php } else { ?> 
     <fb:login-button show-faces="true" perms="email,user_birthday,user_location"></fb:login-button> 
    <?php } ?> 


<div id="fb-root"></div> 
<script src="http://connect.facebook.net/en_US/all.js"></script> 
    <script> 
     FB.init({appId: '<?= FACEBOOK_APP_ID ?>', status: true, 
       cookie: true, xfbml: true}); 
     FB.Event.subscribe('auth.login', function(response) { 
     window.location.reload(); 
     }); 
    </script> 

<?php 
$user = json_decode(file_get_contents(
    'https://graph.facebook.com/me?access_token=' . 
    $cookie['access_token']))->id; 
print_r($user); 
?> 

不過,如果我使用:

$user = json_decode(file_get_contents(
    'https://graph.facebook.com/me?wrap_access_token=' . 
    $cookie['oauth_access_token']))->me; //or $cookie['access_token']))->me; 
register_user($user->id, $user->email, $user->name, $user->username, 
       $user->birthday_date); 

要獲取電子郵件地址,我不斷收到file_get_content錯誤。我也收到錯誤,說它不能識別register_user函數。我覺得我很接近!請儘可能幫忙,謝謝!

回答

0

我不熟悉你使用的register_user庫,但是有什麼理由不使用Facebook連接PHP SDK嗎?您可以通過http://github.com/facebook/php-sdk進行下載,它有兩個例子,分別用於獲取具有擴展權限的身份驗證令牌,然後提取您似乎需要的所有用戶信息。

+0

的register_user是他們的榜樣: http://developers.facebook.com/docs/guides/web#login 下的「賬戶註冊資料」 我會嘗試的PHP SDK,看看它的作品了更好, 謝謝! – 2010-08-04 21:19:13