Informacje o serwerze

Implementacja serwera jest opcjonalna. Usługa identyfikatora instancji służy do wykonywania tych operacji:

Uzyskiwanie informacji o instancjach aplikacji

Aby uzyskać informacje o instancji aplikacji, wywołaj usługę identyfikatora instancji w tym punkcie końcowym i podaj token instancji aplikacji w następujący sposób:

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

Parametry

  • Authorization: key=TWÓJ_KLUCZ_API. Ustaw ten parametr w nagłówku.
  • [opcjonalnie] wartość logiczna details: ustaw ten parametr zapytania na true, aby uzyskać informacje o subskrypcji tematu FCM lub GCM (jeśli istnieją) powiązane z tym tokenem. Jeśli wartość nie zostanie określona, domyślnie przyjmuje się wartość false.

Wyniki

W przypadku wywołania zwraca stan HTTP 200 i obiekt JSON zawierający:

  • application – nazwa pakietu powiązana z tokenem.
  • authorizedEntity – identyfikator projektu przypisany do wysłania do tokena.
  • applicationVersion – wersja aplikacji.
  • Odcisk cyfrowy appSignersha1 na podpis stosowany do pakietu. Wskazuje podmiot, który podpisał aplikację, na przykład Play Store.
  • platform – zwraca ANDROID, IOS lub CHROME, aby wskazać platformę urządzenia, do którego należy token.

Jeśli jest ustawiona flaga details:

  • rel – relacje powiązane z tokenem. Może to być na przykład lista subskrypcji tematów.

Przykładowe żądanie GET

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

Przykładowy wynik

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"}
    }
  }
}

Tworzenie map relacji w instancjach aplikacji

Interfejs API identyfikatora instancji umożliwia tworzenie map relacji dla instancji aplikacji. Możesz na przykład zmapować token rejestracji na temat Komunikacji w chmurze Google, przypisując instancję aplikacji do tego tematu. Interfejs API zapewnia metody tworzenia takich relacji zarówno pojedynczo, jak i zbiorczo.

Tworzenie mapowania relacji na potrzeby instancji aplikacji

Biorąc pod uwagę token rejestracji i obsługiwaną relację, możesz utworzyć mapowanie. Możesz na przykład zasubskrybować instancję aplikacji, aby wyświetlała się w temacie Google Cloud Messaging, wywołując usługę identyfikatora instancji w tym punkcie końcowym, podając następujący token instancji aplikacji:

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

Parametry

  • Authorization: key=TWÓJ_KLUCZ_API. Ustaw ten parametr w nagłówku.

Wyniki

W przypadku powodzenia wywołanie zwraca stan HTTP 200.

Przykładowe żądanie 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

Przykładowy wynik

HTTP 200 OK
{}

Zarządzanie mapami relacji w wielu instancjach aplikacji

Korzystając z metod wsadowych usługi identyfikatora instancji, możesz zarządzać grupami instancji aplikacji. Możesz na przykład zbiorczo dodawać instancje aplikacji do tematu FCM lub GCM albo je usuwać. Aby zaktualizować maksymalnie 1000 instancji aplikacji na wywołanie interfejsu API, wywołaj usługę identyfikatora instancji w tym punkcie końcowym i podaj tokeny instancji aplikacji w treści JSON:

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

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

Parametry

  • Authorization: key=TWÓJ_KLUCZ_API. Ustaw ten parametr w nagłówku.
  • to : nazwa tematu.
  • registration_tokens : tablica tokenów IID instancji aplikacji, które chcesz dodać lub usunąć.

Wyniki

W przypadku powodzenia wywołanie zwraca stan HTTP 200. Puste wyniki wskazują, że token został zrealizowany. W przypadku nieudanych subskrypcji wynik zawiera jeden z tych kodów błędów:

  • NOT_FOUND – token rejestracji został usunięty lub aplikacja została odinstalowana.
  • INVALID_gsutil – podany token rejestracji jest nieprawidłowy dla identyfikatora nadawcy.
  • WEWNĘTRZNY – z nieznanego powodu nie udało się uruchomić serwera backendu. Ponów żądanie.
  • TOO_MANY_TOPICS – zbyt wiele tematów na instancję aplikacji.
  • RESOURCE_EXHAUSTED – zbyt wiele żądań subskrypcji lub anulowania subskrypcji w krótkim czasie. Spróbuj ponownie z wykładniczym ponowieniem.

Przykładowe żądanie 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..."],
}

Przykładowy wynik

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

Tworzenie tokenów rejestracji dla tokenów APN

Za pomocą metody batchImport usługi identyfikatora instancji możesz zbiorczo importować istniejące tokeny APNs iOS do Google Cloud Messaging lub Firebase Cloud Messaging, mapując je na prawidłowe tokeny rejestracji. Wywołaj usługę identyfikatora instancji w tym punkcie końcowym i podaj listę tokenów APNs w treści JSON:

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

Treść odpowiedzi zawiera tablicę tokenów rejestracji identyfikatora instancji gotowych do użycia do wysyłania wiadomości FCM lub GCM do odpowiedniego tokena urządzenia APNs.

Parametry

  • Authorization: key=TWÓJ_KLUCZ_API. Ustaw ten parametr w nagłówku.
  • application : identyfikator pakietu aplikacji.
  • sandbox : wartość logiczna wskazująca środowisko piaskownicy (TRUE) lub środowisko produkcyjne (FALSE).
  • apns_tokens : tablica tokenów APNs dla instancji aplikacji, które chcesz dodać lub usunąć. Maksymalnie 100 tokenów na żądanie.

Wyniki

W przypadku wywołania zwraca stan HTTP 200 i opis wyniku JSON. W przypadku każdego tokena APN, który znajduje się w żądaniu, lista wyników zawiera:

  • Token APNs.
  • Stan. OK lub komunikat o błędzie z opisem.
  • W przypadku wyników, token rejestracji, który FCM lub GCM mapuje na token APNs.

Przykładowe żądanie POST

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

Przykładowy wynik

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

Zarządzanie tokenami rejestracji w przypadku subskrypcji push

Za pomocą metod internetowych usługi identyfikatora instancji możesz importować istniejące subskrypcje push dla Firebase Cloud Messaging. Możesz je też aktualizować i usuwać.

Podczas importowania subskrypcji push otrzymujesz token rejestracji. Ten token pozwala korzystać z funkcji FCM, takich jak przesyłanie wiadomości o tematyce i wiadomości z grupy urządzeń, aby kierować powiadomienia do aplikacji internetowych.

Importuj subskrypcje push

Subskrypcje push możesz importować za pomocą internetowego punktu końcowego instancji InstanceID:

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

Żądanie musi zawierać nagłówek autoryzacji ustalony dla tokena dostępu OAuth 2.0, nagłówek klucza kryptograficznego ustawionego na klucz serwera aplikacji oraz obiekt PushSubscription w treści żądania.

Treść odpowiedzi zawiera token rejestracji gotowy do wysyłania wiadomości FCM lub GCM do odpowiedniej instancji aplikacji internetowej bez konieczności szyfrowania ładunku.

Przesyłanie pary kluczy VAPID do konsoli

Aby importować klucze, musisz mieć dostęp do projektu Firebase na poziomie właściciela. Zaimportuj istniejący klucz publiczny i prywatny w formularzu zakodowanym w base64:

  1. W panelu Ustawienia w konsoli Firebase otwórz kartę Komunikacja w chmurze i przewiń do sekcji Konfiguracja sieci.
  2. Na karcie Certyfikaty Web Push Certificate znajdź i wybierz tekst linku „Importuj istniejącą parę kluczy”.
  3. W oknie Importuj parę kluczy wpisz klucze publiczne i prywatne w odpowiednich polach, a następnie kliknij Importuj. Konsola wyświetli ciąg klucza publicznego i datę dodania.

Pobieranie tokena OAuth2: używanie danych logowania do tworzenia tokenów dostępu

Aby utworzyć token dostępu dla żądania, musisz wygenerować token dostępu i dodać go do żądania HTTP.

Node.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);
      });
}

Python

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

Java

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();
}

Aby autoryzować dostęp do FCM, poproś o zakres https://www.googleapis.com/auth/firebase.messaging.

Parametry

  • Autoryzacja: Bearer <access_token>. Ustaw ten parametr w nagłówku.
  • Klucz kryptograficzny: p256ecdsa=APPLICATION_PUBLIC_KEY. Ustaw ten parametr w nagłówku.
  • Treść żądania: PushSubscription.toJson(). Przekaż subskrypcję push do treści HTTP bez jej analizowania. Treść jest zgodna z kodowaniem W3C PushSubscription.

Odpowiedź

Pomyślnie wywołanie stanu HTTP 200 OK i treści wyników JSON zawierającego token IID.

Przykładowe żądanie 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"
    }
 }

Przykładowy wynik

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

Zaktualizuj subskrypcje push

Możesz zaktualizować subskrypcję push powiązaną z tokenem rejestracji przy użyciu tego punktu końcowego:

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

Parametry

  • Autoryzacja: Bearer <access_token>. Ustaw ten parametr w nagłówku.
  • Klucz kryptograficzny: p256ecdsa=APPLICATION_PUBLIC_KEY. Ustaw ten parametr w nagłówku.
  • Treść żądania: PushSubscription.toJson(). Przekaż subskrypcję push do treści HTTP bez jej analizowania. Treść jest zgodna z kodowaniem W3C PushSubscription.

Wyniki

W przypadku wywołania zwraca stan HTTP 200 i token rejestracji. Może to być ten sam token, który został przekazany w żądaniu lub nowy.

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

Przykładowe żądanie 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"
    }
 }

Przykładowy wynik

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

Usuń subskrypcje push

Żądanie DELETE usuwa szczegóły subskrypcji push z bazy danych FCM. Nadal możesz odbierać wiadomości w aplikacji internetowej przy użyciu protokołu Push API.

Aby usunąć subskrypcję push, wyślij żądanie DELETE do:

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

Przykładowe żądanie DELETE

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

Przykładowy wynik

 HTTP 200 OK {}

Reakcje na błędy

Wywołania interfejsu API identyfikatora instancji instancji zwracają te kody błędów HTTP:

  • HTTP status 400 (Bad request) – brakuje parametrów żądania lub są one nieprawidłowe. Szczegółowe informacje znajdziesz w komunikatach o błędach.
  • HTTP status 401 (Unauthorized) – nagłówek autoryzacji jest nieprawidłowy.
  • HTTP status 403 (Forbidden) – nagłówek autoryzacji nie pasuje do authorizedEntity.
  • HTTP status 404 (Not found) – nie znaleziono nieprawidłowej ścieżki HTTP lub tokena IID. Szczegółowe informacje znajdziesz w komunikatach o błędach.
  • HTTP status 503 (Service unavailable) – usługa jest niedostępna. Ponów żądanie z wykładniczym ponowieniem.