Справочник по серверам

Реализация сервера необязательна. Используйте службу Instance ID, если вы хотите выполнить следующие операции:

Получить информацию об экземплярах приложения

Чтобы получить информацию об экземпляре приложения, вызовите службу идентификатора экземпляра в этой конечной точке, предоставив токен экземпляра приложения, как показано ниже.

 https://iid.googleapis.com/iid/info/IID_TOKEN

Параметры

  • Authorization : ключ=ВАШ_API_KEY. Установите этот параметр в шапке.
  • [необязательные] логические details : установите для этого параметра запроса значение true , чтобы получить информацию о подписке на тему FCM или GCM (если есть), связанную с этим токеном. Если не указано, по умолчанию используется значение false .

Полученные результаты

В случае успеха вызов возвращает статус HTTP 200 и объект JSON, содержащий:

  • application — имя пакета, связанного с токеном.
  • authorizedEntity — идентификатор проекта, авторизованный для отправки в токен.
  • applicationVersion — версия приложения.
  • appSigner — отпечаток sha1 для подписи, примененной к пакету. Указывает, какая сторона подписала приложение; например, Play Store .
  • platform — возвращает ANDROID , IOS или CHROME для указания платформы устройства, к которой принадлежит токен.

Если флаг details установлен:

  • rel - отношения, связанные с токеном. Например, список подписок на темы.

Пример GET запроса

https://iid.googleapis.com/iid/info/nKctODamlM4:CKrh_PC8kIb7O...clJONHoA?Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA

Пример результата

HTTP 200 OK
{
  "application":"com.iid.example",
  "authorizedEntity":"123456782354",
  "platform":"Android",
  "appSigner":"1a2bc3d4e5"
  "rel":{
    "topics":{
      "topicname1":{"addDate":"2015-07-30"},
      "topicname2":{"addDate":"2015-07-30"},
      "topicname3":{"addDate":"2015-07-30"},
      "topicname4":{"addDate":"2015-07-30"}
    }
  }
}

Создание карт отношений для экземпляров приложений

Instance ID API позволяет создавать карты отношений для экземпляров приложения. Например, вы можете сопоставить токен регистрации с темой Google Cloud Messaging, подписав экземпляр приложения на эту тему. API предоставляет методы для создания таких отношений как по отдельности, так и в пакетном режиме.

Создание сопоставления отношений для экземпляра приложения

Имея токен регистрации и поддерживаемую связь, вы можете создать сопоставление. Например, вы можете подписать экземпляр приложения на тему Google Cloud Messaging , вызвав службу идентификатора экземпляра в этой конечной точке, предоставив токен экземпляра приложения, как показано ниже:

 https://iid.googleapis.com/iid/v1/IID_TOKEN/rel/topics/TOPIC_NAME

Параметры

  • Authorization : ключ=ВАШ_API_KEY. Установите этот параметр в шапке.

Полученные результаты

В случае успеха вызов возвращает HTTP-статус 200.

Пример POST -запроса

https://iid.googleapis.com/iid/v1/nKctODamlM4:CKrh_PC8kIb7O...clJONHoA/rel/topics/movies
Content-Type:application/json
Content-Length: 0
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA

Пример результата

HTTP 200 OK
{}

Управление картами отношений для нескольких экземпляров приложения

Используя пакетные методы службы Instance ID, вы можете выполнять пакетное управление экземплярами приложений. Например, вы можете выполнять массовое добавление или удаление экземпляров приложения в теме FCM или GCM. Чтобы обновить до 1000 экземпляров приложения на вызов API, вызовите службу идентификатора экземпляра в этой конечной точке, предоставив токены экземпляра приложения в теле JSON:

 https://iid.googleapis.com/iid/v1:batchAdd

 https://iid.googleapis.com/iid/v1:batchRemove

Параметры

  • Authorization : ключ=ВАШ_API_KEY. Установите этот параметр в шапке.
  • to : Название темы.
  • registration_tokens : массив токенов IID для экземпляров приложения, которые вы хотите добавить или удалить.

Полученные результаты

В случае успеха вызов возвращает статус HTTP 200. Пустые результаты указывают на успешную подписку на токен. Для неудачных подписок результат содержит один из следующих кодов ошибок:

  • NOT_FOUND — токен регистрации был удален или приложение было удалено.
  • INVALID_ARGUMENT — Предоставленный токен регистрации недействителен для идентификатора отправителя.
  • INTERNAL — внутренний сервер вышел из строя по неизвестным причинам. Повторите запрос.
  • TOO_MANY_TOPICS — слишком много тем для одного экземпляра приложения.
  • RESOURCE_EXHAUSTED — Слишком много запросов на подписку или отмену подписки за короткий период времени. Повторите попытку с экспоненциальной задержкой.

Пример POST -запроса

https://iid.googleapis.com/iid/v1:batchAdd
Content-Type:application/json
Authorization:key=API_KEY
{
   "to": "/topics/movies",
   "registration_tokens": ["nKctODamlM4:CKrh_PC8kIb7O...", "1uoasi24:9jsjwuw...", "798aywu:cba420..."],
}

Пример результата

HTTP 200 OK
{
  "results":[
    {},
    {"error":"NOT_FOUND"},
    {},
  ]
}

Создайте токены регистрации для токенов APNs

Используя метод batchImport службы Instance ID, вы можете массово импортировать существующие токены APN iOS в Google Cloud Messaging или Firebase Cloud Messaging, сопоставляя их с допустимыми регистрационными токенами. Вызовите службу идентификатора экземпляра в этой конечной точке, предоставив список токенов APN в теле JSON:

 https://iid.googleapis.com/iid/v1:batchImport

Тело ответа содержит массив токенов регистрации идентификатора экземпляра, готовых к использованию для отправки сообщений FCM или GCM на соответствующий токен устройства APNs.

Параметры

  • Authorization : ключ=ВАШ_API_KEY. Установите этот параметр в шапке.
  • application : Идентификатор пакета приложения.
  • sandbox : логическое значение для указания среды песочницы (ИСТИНА) или рабочей среды (ЛОЖЬ).
  • apns_tokens : массив токенов APN для экземпляров приложения, которые вы хотите добавить или удалить. Максимум 100 токенов на запрос.

Полученные результаты

В случае успеха вызов возвращает HTTP-статус 200 и тело результата JSON. Для каждого токена APNs, предоставленного в запросе, список результатов включает:

  • Токен APNs.
  • Положение дел. Либо OK, либо сообщение об ошибке с описанием сбоя.
  • Для успешных результатов токен регистрации, который FCM или GCM сопоставляется с токеном APN.

Пример POST -запроса

https://iid.googleapis.com/iid/v1:batchImport
{
  "application": "com.google.FCMTestApp",
  "sandbox":false,
  "apns_tokens":[
      "368dde283db539abc4a6419b1795b6131194703b816e4f624ffa12",
      "76b39c2b2ceaadee8400b8868c2f45325ab9831c1998ed70859d86"
   ]
  }
}

Пример результата

HTTP 200 OK
{
 "results":[
       {
        "apns_token": "368dde283db539abc4a6419b1795b6131194703b816e4f624ffa12",
         "status": "OK",
         "registration_token":"nKctODamlM4:CKrh_PC8kIb7O...clJONHoA"
       },
       {
         "apns_token": "76b39c2b2ceaadee8400b8868c2f45325ab9831c1998ed70859d86",
         "status":"Internal Server Error"
        },
     ]
  }

Управление регистрационными токенами для push-подписок

Используя веб-методы службы Instance ID, вы можете импортировать существующие push-подписки для Firebase Cloud Messaging. Вы также можете обновлять и удалять их.

Когда вы импортируете push-подписку, вы получаете токен регистрации. Этот токен позволяет вам использовать функции FCM, такие как обмен сообщениями по темам и сообщениями группы устройств, для таргетинга уведомлений на ваши веб-приложения.

Импорт push-подписок

Вы можете импортировать push-подписки, используя конечную веб-точку InstanceID:

 https://iid.googleapis.com/v1/web/iid

Запрос должен содержать заголовок авторизации, для которого задан маркер доступа OAuth 2.0 , заголовок криптографического ключа, для которого задан ключ вашего сервера приложений , и объект PushSubscription в тексте запроса.

Тело ответа содержит маркер регистрации, готовый к использованию для отправки сообщений FCM или GCM в соответствующий экземпляр веб-приложения без необходимости шифрования полезных данных.

Загрузите пару ключей VAPID в консоль.

Чтобы импортировать ключи, у вас должен быть доступ на уровне владельца к проекту Firebase. Импортируйте свой существующий открытый и закрытый ключ в безопасном кодированном виде base64 URL:

  1. Откройте вкладку «Облачные сообщения» на панели «Настройки консоли Firebase» и прокрутите до раздела «Веб-конфигурация» .
  2. На вкладке сертификатов Web Push найдите и выберите текст ссылки «импортировать существующую пару ключей».
  3. В диалоговом окне «Импорт пары ключей» укажите открытый и закрытый ключи в соответствующих полях и нажмите «Импорт» . Консоль отображает строку открытого ключа и дату добавления.

Получить токен OAuth2: использовать учетные данные для создания токенов доступа

Чтобы создать токен доступа для запроса, вам нужно создать токен доступа и добавить его в HTTP-запрос.

узел.js

 function getAccessToken() {
  return admin.credential.applicationDefault().getAccessToken()
      .then(accessToken => {
        return accessToken.access_token;
      })
      .catch(err => {
        console.error('Unable to get access token');
        console.error(err);
      });
}

питон

def _get_access_token():
  """Retrieve a valid access token that can be used to authorize requests.

  :return: Access token.
  """
  credentials = ServiceAccountCredentials.from_json_keyfile_name(
      'service-account.json', SCOPES)
  access_token_info = credentials.get_access_token()
  return access_token_info.access_token

Джава

private static String getAccessToken() throws IOException {
  GoogleCredentials googleCredentials = GoogleCredentials
          .fromStream(new FileInputStream("service-account.json"))
          .createScoped(Arrays.asList(SCOPES));
  googleCredentials.refreshAccessToken();
  return googleCredentials.getAccessToken().getTokenValue();
}

Чтобы авторизовать доступ к FCM, запросите область https://www.googleapis.com/auth/firebase.messaging .

Параметры

  • Авторизация: Bearer <access_token> . Установите этот параметр в шапке.
  • Криптоключ: p256ecdsa=APPLICATION_PUBLIC_KEY . Установите этот параметр в шапке.
  • Тело запроса: PushSubscription.toJson() . Передайте push-подписку в тело HTTP, не анализируя ее. Содержимое соответствует кодировке W3C PushSubscription .

Ответ

В случае успеха вызов возвращает статус HTTP 200 OK и тело результата JSON, содержащее токен IID.

Пример POST -запроса

 https://iid.googleapis.com/v1/web/iid
 Content-Type:application/json
 Authorization:Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
 Crypto-Key:p256ecdsa=BFv5XHxdkZgpQzCb-...8uI42kf4A4USEIMo
 {
   "endpoint": "https://fcm.googleapis.com/fcm/send/dS4xerbSlqU:APb...aRs4QP",
   "keys": {
         "auth": "7cdY...xxjwz46Q",
         "p256dh": "BH7xPjScJe...z9lbIZDmOV_c"
    }
 }

Пример результата

HTTP 200 OK
{
 "token":"KctODamlM4:CKrh_PC...cl"
}

Обновление push-подписок

Вы можете обновить push-подписку, связанную с вашим токеном регистрации, используя следующую конечную точку:

 https://iid.googleapis.com/v1/web/iid/REGISTRATION_TOKEN:refresh

Параметры

  • Авторизация: Bearer <access_token> . Установите этот параметр в шапке.
  • Криптоключ: p256ecdsa=APPLICATION_PUBLIC_KEY . Установите этот параметр в шапке.
  • Тело запроса: PushSubscription.toJson() . Передайте push-подписку в тело HTTP, не анализируя ее. Содержимое соответствует кодировке W3C PushSubscription .

Полученные результаты

В случае успеха вызов возвращает статус HTTP 200 и токен регистрации. Это может быть тот же токен, который вы передали в запросе, или новый токен.

HTTP 200 OK
{
 "token":"KctODamlM4:CKrh_PC...cl"
}

Пример POST -запроса

 https://iid.googleapis.com/v1/web/iid/KctODamlM4:CKrh_PC...cl:refresh
 Content-Type:application/json
 Authorization:Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
 Crypto-Key:p256ecdsa=BFv5XHxdkZgpQzCb-...8uI42kf4A4USEIMo
 {
   "endpoint": "https://fcm.googleapis.com/fcm/send/dS4xerbSlqU:APb...aRs4QP",
   "keys": {
         "auth": "7cdY...xxjwz46Q"",
         "p256dh": "BH7xPjScJe...z9lbIZDmOV_c"
    }
 }

Пример результата

 HTTP 200 OK
 {
  "token":"KctODamlM4:CI2k_HHw...3P1"
 }

Удалить push-подписки

Запрос DELETE удаляет сведения о push-подписке из базы данных FCM. Вы по-прежнему можете получать сообщения в своем веб-приложении, используя протокол Push API.

Чтобы удалить push-подписку, отправьте запрос DELETE на адрес:

 https://iid.googleapis.com/v1/web/iid/REGISTRATION_TOKEN

Пример запроса DELETE

 https://iid.googleapis.com/v1/web/iid/KctODamlM4:CI2k_HHw...3P1
 Authorization:Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA

Пример результата

 HTTP 200 OK {}

Ответы на ошибки

Вызовы API сервера Instance ID возвращают следующие коды ошибок HTTP:

  • HTTP status 400 (Bad request) — параметры запроса отсутствуют или недействительны. Подробную информацию см. в сообщениях об ошибках.
  • HTTP status 401 (Unauthorized) — заголовок авторизации недействителен.
  • HTTP status 403 (Forbidden) — заголовок авторизации не соответствует authorizedEntity .
  • HTTP status 404 (Not found) — неверный путь HTTP или токен IID не найден. Подробную информацию см. в сообщениях об ошибках.
  • HTTP status 503 (Service unavailable) — сервис недоступен. Повторите запрос с экспоненциальной задержкой.