Какой токен на предъявителя я должен использовать для тестирования Firebase Cloud Messaging? - PullRequest
0 голосов
/ 17 мая 2018

Я пытаюсь отправить тестовое уведомление, используя Firebase Cloud Messaging через Почтальон.Я делаю POST для этого URL

https://fcm.googleapis.com/v1/projects/[my project name]/messages:send

На вкладке «Авторизация» в «Почтальоне» установлено значение «Нет аутентификации», и моя вкладка «Заголовки» выглядит следующим образом

Content-Type: application/json
Authorization: Bearer [server key]

[ключ сервера]вновь сгенерированный ключ сервера во вкладке «Cloud Messaging» в области «Settings» моего проекта Firebase.Я получаю эту ошибку в ответ.

"error": {
    "code": 401,
    "message": "Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
    "status": "UNAUTHENTICATED"
}

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

Ответы [ 3 ]

0 голосов
/ 10 сентября 2018

Токен на предъявителя является результатом получения токена доступа OAuth с вашей учетной записью службы Firebase.

  1. Получите себе ключ учетной записи службы Firebase.
    Перейдите на консоль firebase > Настройки> Учетные записи служб.
    Если вы используете Firebase Admin SDK, создайте новый закрытый ключ.

  2. Вы используете ключ учетной записи службы для аутентификации и получения токена на предъявителя.
    Следуйте, как это сделать в Node, Python или Java здесь: https://firebase.google.com/docs/cloud-messaging/auth-server.

Итак, в Java вы можете получить токен следующим образом:

  private static final String SCOPES = "https://www.googleapis.com/auth/firebase.messaging";

  public static void main(String[] args) throws IOException {
    System.out.println(getAccessToken());
  }

  private static String getAccessToken() throws IOException {
    GoogleCredential googleCredential = GoogleCredential
        .fromStream(new FileInputStream("service-account.json"))
        .createScoped(Arrays.asList(SCOPES));
    googleCredential.refreshToken();
    return googleCredential.getAccessToken();
  }
  1. И теперь вы можете наконец отправить свое тестовое уведомление с помощью FCM.

Код почтальона:

POST /v1/projects/[projectId]/messages:send HTTP/1.1
Host: fcm.googleapis.com
Content-Type: application/json
Authorization: Bearer access_token_you_just_got

{
  "message":{
    "token" : "token_from_firebase.messaging().getToken()_inside_browser",
    "notification" : {
      "body" : "This is an FCM notification message!",
      "title" : "FCM Message"
      }
   }
}
0 голосов
/ 25 мая 2019

Вы должны обязательно использовать Google-OAuth2.0 , который можно сгенерировать, используя описанные шаги в приведенной ссылке.

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

0 голосов
/ 05 сентября 2018

Вы должны сгенерировать новый токен доступа в Почтальоне.

Сначала убедитесь, что вы включили API FCM в консоли разработчика Google. Затем перейдите в Консоль разработчика Google -> API и службы -> Учетные данные. Посмотрите на раздел «Идентификаторы клиента OAuth 2.0». В списке должен быть хотя бы один элемент. Загрузите его как файл json.

В Почтальоне откройте вкладку «Авторизация», выберите Type = «OAuth 2.0», затем нажмите «Получить новый маркер доступа». Диалог появляется.

Поля:

Token Name - введите то, что вы хотите

Тип гранта = Код авторизации

URL обратного вызова = redirect_uris из скачанного json

Auth URL = auth_uri

URL-адрес токена доступа = token_uri

Идентификатор клиента = client_id

Client Secret = client_secret

Scope = "https://www.googleapis.com/auth/firebase.messaging"

Состояние - оставить пустым

Аутентификация клиента = по умолчанию, отправлять как базовый заголовок аутентификации

Нажмите «Запросить токен» и все.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...