Получить идентификатор из Facebook PHP SDK - PullRequest
2 голосов
/ 04 января 2012

Я сидел всю ночь, пытаясь выяснить, как авторизовать пользователя через API Facebooks, просто чтобы получить его идентификатор пользователя.Я испробовал почти все советы и идеи из 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, который необходим для шага 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 ]

3 голосов
/ 04 января 2012

Facebook уже сделал это для вас:

Вы должны прочитать Аутентификация и увидеть примеры

Обновление (примечания к обновленному образцу кода):
Вы используете getSession, которого на самом деле нет в последней версии Facebook-SDK Facebook, а req_perms теперь называется scope. Вы читали документацию Facebook или учебники, размещенные где-то еще? Facebook часто меняет вещи, большинство уроков, которые вы найдете в других источниках, очень быстро устаревают. Лучше получить информацию из официального источника (даже если она не самого высокого качества)

2 голосов
/ 04 января 2012
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();
...