Проблемы с Facebook OAuth 2.0 - PullRequest
       9

Проблемы с Facebook OAuth 2.0

2 голосов
/ 18 апреля 2011

Я пытаюсь интегрировать свое веб-приложение с Facebook.

Прежде всего, я создал страницу login/facebook, которая перенаправляет пользователя на URL: https://www.facebook.com/dialog/oauth?client_id=MY_ID&redirect_uri=https://www.domain.com/connect/facebook&scope=email,user_about_me,user_location

Пока все хорошо.На этом этапе проблем не возникает.

Если пользователь авторизует мое приложение, он перенаправляется на страницу www.domain.com/connect/facebook.На этой странице я создаю пользователя в своей базе данных, используя данные, возвращенные FB, или просто авторизую пользователя и создаю сеанс.На этом этапе у меня есть проблемы.Когда я использую код из примеров со страницы помощи разработчиков Facebook, все работает:

$token_url = "https://graph.facebook.com/oauth/access_token?client_id="
    . $this->app_id . "&redirect_uri=" . urlencode($my_url) . "&client_secret="
    . $this->secret . "&code=" . $code;
$access_token = file_get_contents($token_url);
$graph_url = "https://graph.facebook.com/me?" . $access_token;
$user_object = json_decode(file_get_contents($graph_url));

Когда я использую следующий фрагмент, все работает отлично.Однако я предпочитаю использовать PHP-SDK и возникают проблемы.Когда я использую следующий фрагмент:

$session = $this->facebook->getSession();
var_dump($session);
            if( $session )
            {
                try
                {
                    $uid = $this->facebook->getUser();
                    $me = $this->facebook->api('/me');

                    var_dump('me');
                }
                catch (FacebookApiException $e)
                {
                    error_log($e);
                }
            }

сеанс пуст.У кого-нибудь есть предложения?


Редактировать
Порадевшись с PHP-SDK, я заметил несколько забавных вещей: когда я использую метод getLoginUrl () SDK для генерации URL перенаправления, кажется, что он частично работает.

$login_url = $this->facebook->getLoginUrl(
        array(
            'api_key' => $this->api_key,
            'req_perms' => 'email,user_work_history,user_about_me,user_location',
            'next' => 'https://www.domain.com/connect/facebook'
        )
    );

Теперь, когда пользователи авторизуют мое приложение, он перенаправляется на страницу с некоторыми параметрами, перенаправляя ее, URL выглядит так: https://www.domain.com/connect/facebook?session={"session_key"%3A"11111111111-111111111"%2C"uid"%3A"11111111"%2C"expires"%3A0%2C"secret"%3A"111111111"%2C"base_domain"%3A"domain.com"%2C"access_token"%3A"1111111|222222.0-33333|sdvsdvsdvsdvsdv"%2C"sig"%3A"gsdbsdbsdbsdbsdbsdbsdb"}

У любого естьИдея, почему это не хеши или не должны?

Ура, Марек

1 Ответ

1 голос
/ 07 мая 2011

Вы можете добавить:

'canvas' => 0,
'fbconnect' => 1

в ваш массив параметров getLoginUrl.

...