Сопоставление пользователей в приложениях и на Страницах

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

Facebook выдает ID пользователя внутри приложения людям, которые впервые входят в экземпляр приложения или применяют ограниченный вход, и ID пользователя внутри страницы людям, которые впервые пользуются ботом Messenger. Из этого следует, что ID одного и того же пользователя в разных приложениях и ботах могут различаться.

У компании, например игровой студии, может быть несколько приложений или ботов Facebook, что помогает, например, в проведении перекрестных промоакций, обнаружении фактов мошенничества или взаимодействии с пользователями. В таких случаях может возникнуть необходимость сопоставить ID конкретного пользователя в разных приложениях и ботах.

Идентифицировать одного и того же пользователя в нескольких приложениях можно тремя способами:

Перед тем как использовать эти методы, необходимо сообщить Facebook, что ваши приложения принадлежат одной и той же компании и управляются ей. Для этого с помощью Facebook Business Manager необходимо:

Поле token_for_business в узле User

Связав приложение с Business Manager, можно выполнить запрос к полю token_for_business в узле User с указанием ID пользователя внутри приложения, полученным в результате ограниченного входа или первого входа в экземпляр приложения. Возвращаемая для пользователя строка одинакова для всех приложений, управляемых этим аккаунтом Business Manager.

GET /me?fields=token_for_business

возвращает следующее:

{
  "id": "1234567890"
  "token_for_business": "weg23ro87gfewblwjef"
}

Указания по применению

  • Пользователь, для которого выполняется запрос, должен войти в приложение.
  • В запросе к полю можно использовать маркер доступа приложения или пользователя. Если применяется маркер пользователя, запрос должен выполняться для пользователя, для которого был сгенерирован маркер.
  • Если используется ID внутри приложения, полученный в результате ограниченного входа, укажите в вызове ID приложения, так как у вас нет действительного маркера пользователя для вызовов к API Graph. Имейте в виду, что функции безопасности ограниченного входа в этой ситуации не поддерживаются.
  • Если приложения переходят к другой компании, значение token_for_business также изменяется.
  • Если вы выполняете запрос к полю token_for_business, но приложение не связано с Business Manager, происходит ошибка.
  • Значение, возвращаемое token_for_business, представляет собой маркер, а не ID. Его нельзя использовать напрямую в API Graph для доступа к информации пользователя. ID необходимо хранить в базе данных и использовать в вызовах API Graph для получения информации пользователя.

Для удобства поле token_for_business доступно во всех версиях API.

Свойство token_for_business в объекте signed_request холста

Чтобы упростить сопоставление пользователей в нескольких приложениях с использованием холста, при загрузке таких приложений добавляется поле token_for_business, которое затем передается в них через signed_request. При этом приложение должно быть связано с Business Manager, и пользователь должен войти в него. Пример:

{
  "algorithm": "HMAC-SHA256",
  "expires": 1414263600,
  "issued_at": 1414257389,
  "oauth_token": "CAAGEkq9GMZAkBAFnvvQ3M6msZBKITLa1gVZBVdnLTdJue2QeV6fMKRXn4G6fcEZB5ZAJyg3z6HdaKOJCCMJ1l9YFWmN4hq6nNnx77f9O7SYhsnPcJ6iH79xjFwqhrALgieDp7GiziMy5Y3Mol6RzHvCM5ceqQe9ZAijvrWZB5hEIwphbMQKEwZA4ZBozXP3NJgEZA3nZCMTTtvleWpxfmqIqO5XwxneCZBsZC4",
  "token_for_business": "AbwoGqummPbF3zp_",
  "user_id": "10154418713995634"
}

Значение поля token_for_business будет таким же, как и при прямом запросе к узлу User, например через /me?fields=token_for_business. В его отношении действуют те же правила. Например, если приложения переходят к другой компании, значение token_for_business также изменяется.

Если приложение не связано с Business Manager или пользователь не вошел в него, свойство token_for_business в объекте signed_request будет отсутствовать.

Граница контекста ids_for_business в узле User

Для сопоставления ID компании можно сделать вызов к границе контекста ids_for_business в узле User. Будет возвращен массив объектов, каждый из которых представляет приложение, в которое также вошел пользователь, связанное с той же компанией, что и вызывающее приложение.

GET /me/ids_for_business

Пример ответа:

{
  "data": [
    {
      "id": "10153949089790582", 
      "app": {
        "name": "Business's App 1", 
        "namespace": "business_app_1", 
        "id": "647733625268125"
      }
    }, 
    {
      "id": "605665581", 
      "app": {
        "name": "Business's App 2", 
        "namespace": "business_app_2", 
        "id": "370612223054807"
      }
    }, 
    {
      "id": "10154053730190582", 
      "app": {
        "name": "Business's App 3", 
        "namespace": "business_app_3", 
        "id": "194890427204075"
      }
    }
  ]
}

Чтобы API вернул данные, пользователь должен войти в одно или несколько приложений, связанных с той же компанией, что и приложение, из которого выполняется вызов API. Пример: если пользователь вошел в три из пяти приложений, связанных с определенной компанией, API вернет три объекта.

Часто задаваемые вопросы

Нужно ли использовать API Business Mapping?

Нет. API Business Mapping полезен только для компаний, которые используют несколько приложений Facebook и которым нужно сопоставлять ID пользователей между ними. Если у вас одно основное приложение, вам вряд ли потребуется использовать API Business Mapping и поэтому не нужно настраивать компанию и связывать с ней приложения.

Что такое Business Manager?

Business Manager — это инструмент, который позволяет компаниям и агентствам централизованно управлять своими Страницами Facebook, рекламными аккаунтами, приложениями и способами оплаты. Подробнее о Business Manager.

Думаю, что мне не требуется API Business Mapping, но нужно ли все равно связывать приложения с компанией?

Если вам не требуется API Business Mapping, мы не рекомендуем настраивать компанию. Так как компания должна быть связана с основной Страницей Facebook, настройкой компании в Facebook должен в первую очередь заниматься тот, кто обычно управляет рекламными аккаунтами Facebook и разрешениями для Страницы. Если этот сотрудник уже настроил вашу компанию в Business Manager, вы можете связать приложения с ней.

Можно ли связать приложение с несколькими компаниями?

Нет. Приложение может быть одновременно связано только с одной компанией.

Можно ли передать приложение другой компании?

Да. Сначала необходимо удалить приложение из компании, с которой оно связано в данный момент. Это можно сделать в Business Manager. Просто перейдите на вкладку "Приложения" в настройках компании, выберите приложение и нажмите кнопку "Удалить". После этого приложение можно будет связать с другой компанией.