GCM http401 Berechtigungsfehler

Wenn mein Backend-Server Postanfragen an GCM-Server sendet, bekomme ich einen Autorisierungsfehler HTTP 401.

Ich folgte den hier beschriebenen Schritten:

  • Wie man eine Ansicht mit Translate Animation in Android animiert
  • Wie zu lösen Fehler: Dieses Attribut muss lokalisiert werden. (Bei 'Text' mit Wert 'TOP_LEFT')
  • Cardview mit Trennwänden in ihm
  • Java.lang.IndexOutOfBoundsException: Ungültiger Index 2, Größe ist 2
  • ActionBar Textfarbe
  • Autoincrement VersionCode mit gradle extra Eigenschaften
  • Http://developer.android.com/google/gcm/http.html#auth_error

    >> api_key=AIzaSyDEy3... >> curl --header "Authorization: key=$api_key" --header Content-Type:"application/json" https://android.googleapis.com/gcm/send  -d "{\"registration_id\":\"ABC\"}" 

    Ich bekomme das:

     <HTML> <HEAD> <TITLE>Unauthorized</TITLE> </HEAD> <BODY BGCOLOR="#FFFFFF" TEXT="#000000"> <H1>Unauthorized</H1> <H2>Error 401</H2> </BODY> </HTML> 

    Bei der Fehlersuche heißt es:

     Authentication Error The sender account that you're trying to use to send a message couldn't be authenticated. Possible causes are: 1. Authorization header missing or with invalid syntax. 2. Invalid project number sent as key. 3. Key valid but with GCM service disabled. 4. Request originated from a server not whitelisted in the Server Key IPs. 

    Ich habe Fragen dazu:

    1. Ist der Header in der Curl-Anfrage richtig?
    2. Bedeuten sie "api_key" (AIzaSy …) oder die Projektnummer wie 8305134 …?
    3. Wie kann ich meine Server Key IP whitelist?
    4. Wenn ich den Curl-Befehl laufe, muss ich die IP-Adresse meines Computers whitelist?

  • Wie kann ich dynamischen ToggleButton Text unter Android?
  • NotificationCompat.setStyle () kann Notification.MediaStyle nicht erhalten
  • Animierte Ansicht, die aus einer anderen Ansicht herausschiebt und die Ansichten unterhalb des Weges drückt
  • Wie kann man den Trenner zwischen Eiscreme-Sandwich-Tabs gestalten?
  • Doppeltes Fragment, das Android mit ActionBar dreht
  • Mit FloatMath oder Mathe und einem Cast?
  • 13 Solutions collect form web for “GCM http401 Berechtigungsfehler”

    Bedeuten sie "api_key" (AIzaSy …) oder die Projektnummer wie 8305134 …?

    Es bedeutet Server-Schlüssel, der in deinem Curl-Skript hinzugefügt werden soll. Die Projektnummer sollte nicht zum Senden von Nachrichten auf Serverseite verwendet werden.

    Um den neuen Server-Schlüssel zu erstellen, folgen Sie den Schritten,

    • Gehen Sie zu https://cloud.google.com/console/project
    • Klicken Sie auf Ihr Projekt
    • Gehen Sie zu APIs & auth auf Left Panel
    • Wählen Sie im Untermenü auf dem linken Bedienfeld die Option Anmeldeinformationen aus
    • Klicken Sie unter Public API-Zugriff auf " Create New Key "
    • Wählen Sie 'Server'
    • Im nächsten Dialog, geben Sie die Whitelist-IPs an, wenn Sie irgendwelche haben. Lassen Sie es leer, die Anfragen werden von jedem IP sein
    • Klicken Sie auf Erstellen .
    • Sie finden den neuen Server-Schlüssel unter " Public API Access "

    Dieser Schlüssel soll zum Senden von Nachrichten in deinem Skript auf Serverseite verwendet werden.

    Wie kann ich meine Server Key IP whitelist?

    Sie können Whitelist beim Erstellen von Server-Schlüssel.

    Wenn ich den Curl-Befehl laufe, muss ich die IP-Adresse meines Computers whitelist?

    Für Testzwecke müssen Sie die IP nicht angeben. Für kommerzielle Zwecke können Sie vielleicht.

    Warnung Einstellung IP auf 0.0.0.0/0 wie in der Getting Started Guide erwähnt wird alle IPv4 Adresse, aber nicht IPv6.

    AKTUALISIEREN:

    Google hat die Konsole geändert, jetzt musst du:

    • Gehen Sie zu https://console.developers.google.com
    • Wählen Sie Ihr Projekt aus (Dropdown oben)
    • Wählen Sie im Menü auf der linken Seite die Option Übersicht
    • Wählen Sie Google Cloud Messaging unter Mobile APIs Titel
    • Klicken Sie auf die Schaltfläche Aktivieren
    • Dann müssen Sie die Anmeldeinformationen erstellen

    DEPRECATED

    Ich hatte das gleiche Problem … dann merkte ich, dass ich das Google Cloud Messaging auch für Android hinzufügen musste.

    • Gehen Sie zu https://cloud.google.com/console/project
    • Klicken Sie auf Ihr Projekt
    • Gehen Sie zu APIs & auth auf Left Panel
    • Wählen Sie im Untermenü APIs im linken Bedienfeld aus
    • Suchen Sie Google Cloud Messaging für Android (oder / und Chrome) und legen Sie es auf ON

    Hoffe es hilft dir!

    Schließlich fand mein Problem

    Ich habe HTTP Authorization Header wie diese Authorization:[Api key]

    Lösung

    Ich fehlte 'key =' + [Ihr Api Schlüssel] im Autorisierungs-Header,

    So wird der volle HTTP-Header sein

    Authorization:key=Apikey

    Ich hatte das gleiche Problem. Ich habe den Android Key benutzt, wie in den Anweisungen auf http://developer.android.com/google/gcm/gs.html erwähnt. Aber ich musste eigentlich den Serverschlüssel verwenden, um von meinem Fiddler-Fenster und dem PushSharp-Beispiel authentifiziert zu werden.

    Ich habe diesen Fehler gelöst, indem ich den Serverschlüssel anstelle des API-Schlüssels verwende. Sie können den Server-Schlüssel von der Firebase-Konsole erhalten, indem Sie auf den Gang klicken und auf Projekteinstellungen klicken, danach gehen Sie auf die Registerkarte, die Cloud Messaging sagt und den Server-Schlüssel bekommt, sowohl der normale Server-Schlüssel als auch der Legacy-Server-Schlüssel.

    Dies funktioniert sowohl auf Firebase als auch auf GCM, so dass wir nicht zwei Schlüssel separat deklarieren müssen.

    Ich hatte das gleiche Problem. Was ich tat, ist:

    1. Löschen Sie die IP-Whitelist, die automatisch auf IP eingestellt ist.
    2. Serverschlüssel neu generieren und den neu generierten Schlüssel verwenden.
    1. Ich weiß nicht, die Syntax der curl Befehl, aber es scheint seltsam, dass ein Header Sie als – --header "key: value" während die andere als – --header key:"value" . Vielleicht ist einer von ihnen falsch. Außerdem sollten Sie registration_id:ABC auf "{\"registration_ids\":[\"ABC\"]}" ändern.

    2. Sie meinen den API Key.

    3. Wenn Sie bei der Erstellung Ihres API-Schlüssels keine Liste der weiß aufgelisteten IPs definiert haben, sollte sie standardmäßig weiß aufgeführt sein.

    Wenn Sie vor kurzem versucht haben, ein neues Projekt in GCM zu erstellen und einen Serverschlüssel hinzuzufügen, wird es trotzdem keine Berechtigung erlangen, da Google die Autorisierung neu erstellter Serverschlüssel beendet hat, um Firebase Cloud Messaging zu fördern. Derzeit ist die einzige Option, um einen neuen Schlüssel zu erstellen, um das bestehende Projekt zunächst auf Firebase zu migrieren.

    Wenn Fehler 401: die GCM muss in FCM importiert werden, um zu arbeiten Dann können die Server- und Absender-IDs unter https://console.firebase.google.com/project/my_projectID/settings/cloudmessaging gefunden werden

    Unerlaubtes Problem wird passieren, während es eine Fehlanpassung in API-Schlüssel gibt. Löschen Sie den Server-Schlüssel und regenerieren Sie einen neuen. Verwenden Sie den Server-API-Schlüssel in der serverseitigen Codierung. Und ordnungsgemäß verwenden Sie die Absender-ID im Android-Client

    Das Problem ist mit der Autorisierung verbunden, aber ich stieß auf diesen Fehler, während ich versuchte, Dinge auf alte Weise zu machen, ich weiß, das ist eine alte Frage, aber lass mich meine 50 Cent darauf legen. Zuerst gibt es ein neues Kind in der Stadt namens "Firebase Cloud Messaging FCM". Erlaube mir, Google zu zitieren:

    FCM ist die neue Version von GCM unter der Marke Firebase. Es erbt die Kerninfrastruktur von GCM, mit neuen SDKs, um Cloud Messaging-Entwicklung zu erleichtern.

    Vorteile des Upgrades auf FCM SDK sind:

    Einfachere Kundenentwicklung. Sie müssen nicht mehr Ihre eigene Registrierungs- oder Abonnement-Wiederholungslogik schreiben. Eine Out-of-the-Box-Benachrichtigungslösung. Sie können Firebase-Benachrichtigungen verwenden, eine serverlose Benachrichtigungslösung mit einer Webkonsole, die es jedem ermöglicht, Benachrichtigungen an bestimmte Zielgruppen zu senden, die auf Firebase Analytics-Einsichten basieren. Weitere Informationen über FCM- Konfiguration für Android-Studio

    Ich hoffe, das hilft jemand, der versucht, Dinge auf alte Weise zu machen

    Die oben genannten Dinge sind alle getan dann überprüfen curl init Betrieb die Funktion
    curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, 0 );
    Ist enthalten oder nicht, wenn es nicht dann die Funktion ist

    Ich hatte das gleiche Problem. Was ich tat, ist, anstelle von API-Schlüssel, ich habe Nachricht gesendet und anstelle von Nachricht Ich schickte API-Schlüssel. Überprüfe einfach, ob du einen Fehler machst.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.