Что изменилось для разработчиков после 1 октября?

Опубликовал 10 октября 2011 в рубрике Технарям

Tweet

Что изменилось для разработчиков после 1 октября?

В этой статье перечислены все изменения в кодах Facebook для создания собственных приложений, которые вступили в силу 1 октября 2011 года. Если ваше приложение не поддерживает эти изменения, оно не будет работать.

  1. Переход на https для всех приложений обязателен. Без него вкладки и Canvas отображаться не будут. Подробнее читайте в одной из предыдущих статей.
  2. Нужно использовать (или изменить существующую) аутентификацию OAuth 2.0. Для этого обновите библиотеки кодов Facebook, которые вы используете. Скачать их можно на github.com: Javascript SDK, PHP SDK.
  3. Затем в коде приложений при инициализации библиотеки, где есть такое значение FB.init({…}) добавить параметр oauth: true.
  4. Для кодов FB.login() и FB.getLoginStatus() ответные параметры передаются уже не через session, а через authResponse, и каждое поле поле внутри него либо изменило название, либо удалено. Например, объект при старом ответе сервера выглядел так:
    
    {
        "status":"connected",
        "session": {
            "access_token":"asdf",
            "uid":"1234",
            "expires":1315364400,
            "sig":"asdf",
            "base_domain":"mysite.com",
            "session_key":"asdf",
            "secret":"asdf"
        }
    }
    

    Сейчас после перехода на OAuth 2.0 объект выглядит так:

    
    {
        "status": "connected",
        "authResponse": {
          "accessToken": "asdf",
          "userID": "1234",
          "expiresIn": 1315364400,
          "signedRequest": "asdf"
       }
    }
    
  5. Старый метод FB.getSession() заменён на FB.getAuthResponse();
  6. Старое событие auth.sessionChange теперь auth.authResponseChange. Использование старого метода не будет выдавать ошибки, но при этом просто ничего не будет происходить.
  7. Статус “notConnected” сейчас “not_authorized“. Три варианта для response.status – сейчас это “connected“, “not_authorized“, and “unknown“.
  8. Для FB.login(callback, options) options.perms заменяются на options.scope.
  9. Название cookie раньше было ‘fbs_’ + APP_ID стало ‘fbsr_’ + APP_ID, и включает только информацию signedRequest. (Это используется для того, чтобы понять, залогинен ли пользователь, ещё до того, как загрузится FB JS SDK.)
  10. Главное изменение в серверной части (PHP SDK) – это получение Access Token. Также для проверки cookie используется не MD5 как раньше, а SHA256. Значение access_token не хранится в cookie напрямую. Вместо этого надо делать дополнительный REST-вызов, чтобы получить access_token, используя информацию, хранящуюся в cookie, и секрет приложения Facebook. Более подробно ознакомится с этим вопросом можно в документации Facebook.
    Например, при использовании XFBML кнопки Facebook-логина cookie будут содержать следующую информацию в формате signed_request:

    
    {
        "algorithm": "HMAC-SHA256",
        "code":"xxxxxxx",
        "issued_at":1315979667,
        "user_id":"yyyyyyy"
    }
    

    Подробно об signes_request почитайте в документации.
    Обратите внимание, что в документации параметр redirect_uri= пустой:
    - было

    
    
    https://graph.facebook.com/oauth/access_token?
    
         client_id=YOUR_APP_ID&redirect_uri=YOUR_URL&
         client_secret=YOUR_APP_SECRET&code=THE_CODE_FROM_ABOVE
    

    - стало

    
    
    https://graph.facebook.com/oauth/access_token?
    
         client_id=YOUR_APP_ID&redirect_uri=&
         client_secret=YOUR_APP_SECRET&code=THE_CODE_FROM_ABOVE
    

    Это фрагмент кода из PHP SDK:

    
          // JS SDK с пустым параметром redirect_uri ''
          if (array_key_exists('code', $signed_request)) {
            $code = $signed_request['code'];
            $access_token = $this->getAccessTokenFromCode($code, '');
            if ($access_token) {
              $this->setPersistentData('code', $code);
              $this->setPersistentData('access_token', $access_token);
              return $access_token;
            }
          }
    

Желаю успеха в освоении изменений и создании приложений.

Информация по теме:

Facebook Developer Roadmap Update: Moving to OAuth 2.0 + HTTPS
JavaScript changes for Facebook’s OAuth 2.0 upgrade
Updated JavaScript SDK and OAuth 2.0 Roadmap
Facebook Developers Blog. Next steps towards a modern Platform: OAuth 2.0 and HTTPS

Поделиться в социальных сетях:

Что изменилось для разработчиков после 1 октября?

Похожие записи:

Tags: , , , , , , ,

Комментарии Facebook:

Leave a Reply