В 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› Настройки ›Запросы на удаление данных
Проверка обратного вызова
- Войдите в свое приложение с помощью Facebook Login.
- Зайдите в настройки приложения: https://www.facebook.com/settings?tab=applications
- Удалите ваше приложение.
- В разделе "Удалено" щелкните свое приложение.
- Запросить удаление данных с карточки приложения.
Для отладки URL-адреса обратного вызова Facebook
Удачного кодирования…