从Facebook PHP SDK获取ID

时间:2012-01-03 20:48:51

标签: php facebook facebook-graph-api facebook-php-sdk

我一直在试图弄清楚如何通过Facebooks API授权用户,只是为了获取用户ID。 我已经尝试了几乎所有来自S / O的提示和想法,5页的“Google指南”和Facebook开发人员指南,但似乎没有什么对我有用!如果有人会如此善良,并逐步指导如何使其发挥作用!

Open Graph是必须的吗?我试过它,也没有工作也没有工作。我已经有了我的应用程序(可能没有正确的设置吗?)和PHP SDK

$uid = $facebook->getUser();等没有给我任何帮助。)

提前致谢!

这个代码例如不起作用,我在S / O上找到它并且他说它对他来说是完美的工作!

<?php
require_once 'facebook.php';
$facebook = new Facebook(array(
  'appId'  => '########',
  'secret' => '##########################',
  'cookie' => true,
));

$req_perms = "publish_stream,offline_access,user_status,email,read_stream"; 
$session = $facebook->getSession();
$loginUrl = $facebook->getLoginUrl(array('canvas'=> 1,'fbconnect' => 0,'req_perms' => $req_perms));
$user_info = null;
if (!$session) 
    { echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>";exit;}
else{
     try {  $user_info = $facebook->api('/me');  } 
     catch (FacebookApiException $e) 
         { echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>"; exit;}
    }
?>
<!doctype html>
<html>
<head>
</head>
<body>
<?php 
$user_name=$user_info['name'];
echo "Hi $user_name ! Your Facebook ID is: ".$user_info['id']."<br/>"; 
echo "Hi $user_name ! Your E-mail Address is: ".$user_info['email']."<br/>"; 
echo "Thanks for accepting our application.";
//print_r($user_info);
?>
</body>
</html>

编辑:感谢所有快速反应,我终于开始工作了!我一直在正确的轨道上......

第1步:建立这样的链接

https://www.facebook.com/dialog/oauth?
client_id=YOUR_APP_ID&redirect_uri=YOUR_URL

使用facebook app授权用户,这是第2步所需的。

第2步:实施此代码段。

require_once('facebook.php');

$fb_app_id = "APP_ID";
$fb_secret = "APP_SECRET";
$fb_app_url = "APP_URL";
$facebook = new Facebook(array(
    'appId'  => $fb_app_id,
    'secret' => $fb_secret,
    'cookie' => true,
));

$facebook_login_url = $facebook->getLoginUrl(array(
    'canvas' => 1,
    'fbconnect' => 0,
    'scope' => 'publish_stream,user_photos',
    'redirect_uri' => $fb_app_url
));

$facebook_user_id = $facebook->getUser();

谢谢 @KevinCogill @JuicyScripter 获取提示!

2 个答案:

答案 0 :(得分:3)

Facebook已经为你做过:

您必须阅读Authentication并查看examples

更新(有关更新的代码示例的说明):
您使用的getSession在最新版本的Facebook PHP-SDK中并不存在,req_perms现在称为scope。您是否阅读过其他地方发布的Facebook文档或教程? Facebook频繁更改内容大多数在其他来源中找到的教程都会过时。最好从官方来源获取信息(即使它不是最好的质量)

答案 1 :(得分:2)

require_once('facebook/facebook.php');

$facebook = new Facebook(array(
    'appId'  => $fb_app_id,
    'secret' => $fb_secret,
    'cookie' => true,
));

$facebook_login_url = $facebook->getLoginUrl(array(
    'canvas' => 1,
    'fbconnect' => 0,
    'scope' => 'publish_stream,user_photos',
    'redirect_uri' => $fb_app_url
));

$facebook_user_id = $facebook->getUser();