2010-08-02 46 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