Facebook OAuth 2.0

Posted in: PHP, Полезное, Разработка сайтов

ФБ давно уже предупреждал о переходе на OAuth 2.0.
Что поменялось:

  1. Куки называются ‘fbsr_’ ( раньше ‘fbs_’);
  2. ‘perm’ стало ‘scope’
  3. response.authResponse (было response.session)
  4. FB.init нужно добавить oauth:true

FB.getSession

Теперь, кто использовал функцию get_facebook_cookie().
Она стала вот такой:

function get_facebook_cookie($app_id, $app_secret) {
    if (isset($_COOKIE['fbsr_' . $app_id])) {
        list($encoded_sig, $payload) = explode('.', $_COOKIE['fbsr_' . $app_id], 2);

        $sig = base64_decode(strtr($encoded_sig, '-_', '+/'));
        $data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);

        if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') {
            return null;
        }
        $expected_sig = hash_hmac('sha256', $payload, $app_secret, $raw = true);
        if ($sig !== $expected_sig) {
            return null;
        }
        $token_url = "https://graph.facebook.com/oauth/access_token?"
                . "client_id=" . $app_id . "&client_secret=" . $app_secret . "&redirect_uri=" . "&code=" . $data['code'];

        $response = @file_get_contents($token_url);
        $params = null;
        parse_str($response, $params);
        $data['access_token'] = $params['access_token'];
        $data['session_key'] = $data['code'];
        return $data;
    } else {
        return null;
    }
}

Но лушче уже сейчас перейти на PHP SDK.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

* Copy this password:

* Type or paste password here:

2,074 Spam Comments Blocked so far by Spam Free Wordpress

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>