В Facebook появилась новая функция защиты конфиденциальности данных. Они помогают пользователю удалить все данные, сохраненные / обработанные приложениями / бизнес-интеграциями. Поэтому, как разработчику приложения, нам необходимо реализовать функциональность, чтобы обеспечить соответствие нашего приложения требованиям Facebook.

Это обновление станет обязательным в будущем для приложений, использующих аутентификацию Facebook, особенно в европейских странах после принятия нового закона о конфиденциальности данных (GDPR).

Согласно этой функции, если пользователь сейчас запускает какое-либо приложение со страницы настроек Facebook, он / она имеет возможность удалить всю информацию, полученную приложением о них от Facebook.

Https://developers.facebook.com/docs/apps/delete-data/

В этом посте я покажу вам, как реализовать этот обратный вызов запроса в вашем приложении.

Реализация URL-адреса обратного вызова:

Во-первых, вы должны создать веб-API POST на своем сервере, чтобы добавить его в настройках Facebook вашего приложения.

Работа этого веб-API заключается в анализе подписанного запроса Facebook и удалении данных FB пользователя.

У вашего веб-API должен быть включен протокол HTTPS.

Анализ подписанного запроса Facebook:

В JavaScript я реализую это в Node JS.

var crypto = require('crypto');

function base64decode(data) {
	 while (data.length % 4 !== 0){
                data += '=';
          }
data = data.replace(/-/g, '+').replace(/_/g, '/');
return new Buffer(data, 'base64').toString('utf-8');
}

function parseSignedRequest(signedRequest, secret) {
var encoded_data = signedRequest.split('.', 2);
// decode the data
var sig = encoded_data[0];
var json = base64decode(encoded_data[1]);
var data = JSON.parse(json);
if (!data.algorithm || data.algorithm.toUpperCase() != 'HMAC-SHA256') {
throw Error('Unknown algorithm: ' + data.algorithm + '. Expected HMAC-SHA256');
}
var expected_sig = crypto.createHmac('sha256', secret).update(encoded_data[1]).digest('base64').replace(/\+/g, '-').replace(/\//g, '_').replace('=', '');
if (sig !== expected_sig) {
throw Error('Invalid signature: ' + sig + '. Expected ' + expected_sig);
}
return data;
}

Параметры функции parseSignedRequest

  • signedRequest: вы получите это от Facebook в теле. Ваш сервер должен иметь возможность анализировать тело в кодировке URL
  • secret: секретный ключ вашего приложения

Разобранный объект JSON будет выглядеть так:

{
   "oauth_token": "{user-access-token}",
   "algorithm": "HMAC-SHA256",
   "expires": 1291840400,
   "issued_at": 1291836800,
   "user_id": "218471"
}

user_id - это поле, соответствующее вашему обратному вызову. Это идентификатор пользователя facebook вашего приложения.

Ответ от Facebook:

Ответ JSON, содержащий URL-адрес, по которому пользователь может проверить статус своего запроса на удаление, и буквенно-цифровой код подтверждения.

{ url: '<url>', confirmation_code: '<code>' }

Добавление API в качестве обратного вызова в приложении

В панели управления приложения в разделе Продукты ›Вход в Facebook› Настройки ›Запросы на удаление данных

Проверка обратного вызова

  1. Войдите в свое приложение с помощью Facebook Login.
  2. Зайдите в настройки приложения: https://www.facebook.com/settings?tab=applications
  3. Удалите ваше приложение.
  4. В разделе "Удалено" щелкните свое приложение.
  5. Запросить удаление данных с карточки приложения.

Для отладки URL-адреса обратного вызова Facebook



Удачного кодирования…