2016-10-31 2 views
0

Я пытаюсь использовать уведомление Google Firebase для отправки push-уведомлений. Но получите WebException, в котором говорится, что удаленный сервер возвращает 401 неавторизованный. Я не могу понять, почему это не работает.Неавторизованный при вызове уведомления Firebase Google C#

Любой, кто знает, почему это не работает?

public String GETSendNotificationFromFirebaseCloud() 
    { 
     var result = "-1"; 
     var webAddr = "https://fcm.googleapis.com/fcm/send"; 

     var httpWebRequest = (HttpWebRequest)WebRequest.Create(webAddr); 
     httpWebRequest.ContentType = "application/json"; 
     httpWebRequest.Headers.Add("Authorization:key=" + "AIzaSyD0z6ngvR_we1l************"); 

     httpWebRequest.Method = "POST"; 

     using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) 
     { 
      string json = "{\"to\": \"/topics/news\",\"data\": {\"message\": \"This is a Firebase Cloud Messaging Topic Message!\",}}"; 


      streamWriter.Write(json); 
      streamWriter.Flush(); 
     } 

     var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); 
     using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) 
     { 
      result = streamReader.ReadToEnd(); 
     } 

     return result; 
    } 
+2

Вы уверены, что используете действующий ключ сервера в вашем «Авторизация: ключ»? Кроме того, пожалуйста ** никогда ** не раскрывайте свой Ключ сервера публике. –

+0

iam использовать тот же ключ сервера и ключ wepapi но не работает – saeed3164

+0

Я запутался. Вы имеете в виду, что вы пробовали использовать оба? Или вы говорите, что оба ключа сервера и веб-API одинаковы? –

ответ

-1

Во-первых, я согласен с @AL ... никогда публично описать свой API_SERVER_KEY и SENDER_ID т.д.

Ниже приведены шаги, чтобы следовать:

  1. Перейти к Firebase консоли, такие как https://console.firebase.google.com/project/yourproject

  2. На левой панели Перейдите в раздел «База данных», затем перейдите к «ПРАВИЛАМ».

  3. Обновление правил в этих

    "правила": { ".read ": "правда", " .WRITE": "истинный" }

Тогда повторите попытку. Надеюсь, это сработает :)

+0

Проверка iam на localhost правильная? – saeed3164

+0

да .. вы можете протестировать локальный хост, а также на «authDomain», предоставленный firebase против вашего приложения. для обеих окружений (-ов) вам необходимо обновить эти правила; иначе firebase не позволит вам читать/писать в базу данных реального времени –

+0

благодаря правилам обновления iam, но см. сообщение об ошибке.iam topic.iam use webapikey или ключ сервера? – saeed3164

0

Вы можете проверить, что вы отправляете правильный ключ сервера. Вам нужен тот, который находится на вкладке Cloud Messaging Firebase. На некоторых других вкладках в Firebase Console есть другие ключи сервера.

мне удалось получить FCM работает в моем приложении Google App Engine, с помощью этого Google article который я нашел от другого StackOverflow Ответ here

Что будет полезно для вас в статье Google является использование завитка, чтобы проверить ваш ключ сервера.

api_key=YOUR_SERVER_KEY 
curl --header "Authorization: key=$api_key" \ 
    --header Content-Type:"application/json" \ 
    https://fcm.googleapis.com/fcm/send \ 
    -d "{\"registration_ids\":[\"ABC\"]}" 

Я надеюсь, что это поможет.

Смежные вопросы