Verwenden von Postman für den Zugriff auf OAuth 2.0-Google-APIs

76

Ich versuche, mit der Postman Chrome App auf die Proximity Google API zuzugreifen . Ich habe Tutorials auf der Postman- und Google Dev-Website befolgt, erhalte aber immer noch die 401-Fehlermeldung.

Was tue ich?

  • Schritt 1 - Aktivieren Sie die Proximity-API:

Um die Proximity-API verwenden zu können, muss sie zuerst in der Google Dev-Konsole aktiviert werden. Mit diesem Tutorial habe ich die Unterstützung für die Proximity-API für mein Projekt aktiviert

  • Schritt 2 - Holen Sie sich die Anmeldeinformationen:

Gemäß diesem Tutorial muss ich die Client-ID und das Geheimnis erhalten. Hier bin ich verwirrt. Anmeldeinformationen -> Anmeldeinformationen hinzufügen -> OAuth2.0-Client-ID -> Optionsfeld "Chrome App auswählen" (da ich Postman verwende) -> Geben Sie den letzten Teil der URL des Chrome Web Store von Postman ein ( fhbjgbiflinjbdggehcddcbncdddomop) -> Klicken Sie auf die Schaltfläche "Erstellen". Diese Schritte werden ausgeführt Generieren Sie nur eine Kunden-ID, kein Geheimnis. Mache ich etwas falsch?

Über die Google Dev-Konsole kann eine JSON-Datei mit Client-ID, Auth-URI und Token-URI heruntergeladen werden Geben Sie hier die Bildbeschreibung ein

Ich habe dies heruntergeladen, aber dies ist wenig hilfreich, wenn ich Postman verwende. Ich vermute, diese JSON-Datei kann in eine JS-Anwendung aufgenommen werden.

  • Schritt 3 - Verwenden Sie Postman, um die API zu testen

Geben Sie hier die Bildbeschreibung ein

Was bekomme ich Geben Sie hier die Bildbeschreibung ein

Sobald ich auf die Debug-URL klicke, wird der folgende Bildschirm angezeigt

Geben Sie hier die Bildbeschreibung ein

Sai
quelle

Antworten:

125

Der Postbote fragt die Google-API ab, die sich als Webanwendung ausgibt

Generieren Sie ein OAuth 2.0-Token:

  1. Stellen Sie sicher, dass die Google-APIs aktiviert sind
  2. Erstellen Sie eine OAuth 2.0-Client-ID

    • Gehen Sie zu Google Console -> API -> OAuth-Zustimmungsbildschirm
      • In getpostman.comden autorisierten Domänen. Klicken Sie auf Speichern.
    • Gehen Sie zu Google Console -> API -> Anmeldeinformationen
      • Klicken Sie auf "Anmeldeinformationen erstellen" -> OAuth-Client-ID -> Webanwendung
        • Name: 'getpostman'
        • Autorisierte Weiterleitungs-URIs: https://www.getpostman.com/oauth2/callback
    • Kopieren Sie die generierten Felder Client IDund Client secretFelder zur späteren Verwendung
  3. Wählen Sie im Postboten die Registerkarte Autorisierung und dann den Typ "OAuth 2.0". Klicken Sie auf "Neues Zugriffstoken abrufen".

    • Füllen Sie das Formular GET NEW ACCESS TOKEN wie folgt aus
      • Token-Name: 'Google OAuth getpostman'
      • Grant-Typ: 'Autorisierungscode'
      • Rückruf-URL: https://www.getpostman.com/oauth2/callback
      • Auth URL: https://accounts.google.com/o/oauth2/auth
      • Zugriffstoken-URL: https://accounts.google.com/o/oauth2/token
      • Client-ID: Client IDWird in Schritt 2 generiert (z. B. '123456789012-abracadabra1234546789blablabla12.apps.googleusercontent.com').
      • Client Secret: Client secretWird in Schritt 2 generiert (z. B. 'ABRACADABRAus1ZMGHvq9R-L').
      • Bereich: Den erforderlichen OAuth-Bereich finden Sie in den Google-Dokumenten (z. B. https://www.googleapis.com/auth/cloud-platform ).
      • Zustand: Leer
      • Clientauthentifizierung: "Als Basisauthentifizierungsheader senden"
    • Klicken Sie auf "Token anfordern" und "Token verwenden".
  4. Legen Sie die Methode, die Parameter und den Text Ihrer Anfrage gemäß den Google-Dokumenten fest
DimaTX
quelle
33
Gründlicher erklärt als von Googles Mitarbeitern :)
Gennadiy Ryabkin
1
Dies schien zu funktionieren, bis ich zum nächsten Problem komme, das mit dem Postboten zu tun zu haben scheint , der die Google 2FA-Authentifizierung nicht unterstützt. Hier ist die Meldung: "Eine Anwendung fordert die Erlaubnis zum Zugriff auf Ihr Google-Konto an." Irgendeine Idee?
LMG
2
Tadellose Antwort. Vielen Dank !
Uribalb
3
Ich erhalte das Ergebnis "Dieser Browser oder diese App ist möglicherweise nicht sicher"
Stand
1
Dieser Ablauf funktioniert nicht mehr: Google verbietet die Authentifizierung außerhalb der Hauptbrowser. Das Postman-Team sagt, es arbeite an der Funktion "Mit Browser autorisieren" - github.com/postmanlabs/postman-app-support/issues/7700
Lev
56

Der beste Weg, den ich bisher gefunden habe, ist, hier zum Oauth-Spielplatz zu gehen: https://developers.google.com/oauthplayground/

  1. Wählen Sie die entsprechende Google API-Kategorie aus und wählen Sie dann den Bereich innerhalb dieser Kategorie in der Benutzeroberfläche aus.
  2. Um den Autorisierungscode zu erhalten, klicken Sie auf die blaue Schaltfläche "API autorisieren". Tauschen Sie den Autorisierungscode für das Token aus, indem Sie auf die blaue Schaltfläche klicken.
  3. Speichern Sie das OAuth2-Token und verwenden Sie es wie unten gezeigt.

Fügen Sie im HTTP-Header für die REST-API-Anforderung Folgendes hinzu: "Authorization: Bearer". Hier ist die Autorisierung der Schlüssel und "Träger". Zum Beispiel: "Autorisierung: Träger za29.KluqA3vRtZChWfJDabcdefghijklmnopqrstuvwxyz6nAZ0y6ElzDT3yH3MT5"

Vijay Madhavapeddi
quelle
2
Dieser Workflow hat mein Problem gelöst! Um die Erklärung zu ergänzen, habe ich nach "Exchange-Autorisierungscode für Token" den Wert in das Feld "Zugriffstoken" kopiert und ihn als Autorisierungsträger für Postman
Manasouza
12
  1. Gehen Sie zu https://console.developers.google.com/apis/credentials
  2. Erstellen Sie Anmeldeinformationen für Webanwendungen.

Postman API-Zugriff

  1. Verwenden Sie diese Einstellungen mit oauth2 in Postman:

SCOPE = https: //www.googleapis.com/auth/admin.directory.userschema

Post https: //www.googleapis.com/admin/directory/v1/customer/customer-id/schemas

{
  "fields": [
    {
      "fieldName": "role",
      "fieldType": "STRING",
      "multiValued": true,
      "readAccessType": "ADMINS_AND_SELF"
    }
  ],
  "schemaName": "SAML"
}
  1. Benutzer zu patchen verwenden:

SCOPE = https://www.googleapis.com/auth/admin.directory.user

PATCH https://www.googleapis.com/admin/directory/v1/users/[email protected]

 {
  "customSchemas": {
     "SAML": {
       "role": [
         {
          "value": "arn:aws:iam::123456789123:role/Admin,arn:aws:iam::123456789123:saml-provider/GoogleApps",
          "customType": "Admin"
         }
       ]
     }
   }
}
Mohammed Yahya
quelle
8

Ich habe herausgefunden, dass ich keine Anmeldeinformationen für den richtigen App-Typ generiert habe.
Wenn Sie Google oAuth 2-APIs mit Postman testen, wählen Sie
Anmeldeinformationen -> Anmeldeinformationen hinzufügen -> OAuth2.0-Client-ID -> Webanwendung .

Geben Sie hier die Bildbeschreibung ein

Sai
quelle
5

Dies ist eine alte Frage, aber sie hat keine gewählte Antwort, und ich habe dieses Problem nur selbst gelöst. Hier ist meine Lösung:

  1. Stellen Sie sicher, dass Sie für die Arbeit mit Ihrer Google-API eingerichtet sind. Siehe die Liste der Voraussetzungen von Google . Ich habe mit Google My Business gearbeitet und daher auch den Prozess " Erste Schritte" durchlaufen.

  2. Auf dem OAuth 2.0-Spielplatz müssen Sie in Schritt 1 auswählen, welche API Sie authentifizieren möchten. Wählen Sie für Ihren Fall die entsprechende Option aus oder geben Sie sie ein (in meinem Fall für Google My Business musste ich https://www.googleapis.com/auth/plus.business.manage in das Eingabefeld "Geben Sie Ihre eigenen Bereiche ein" eingeben). Hinweis: Dies entspricht der Beschreibung in Schritt 6 des Abschnitts "Einfache HTTP-Anforderung erstellen" des Handbuchs " Erste Schritte" .

  3. Unter der Annahme einer erfolgreichen Authentifizierung sollte im Schritt "Ergebnis von Schritt 1" auf dem OAuth-Spielplatz ein "Zugriffstoken" zurückgegeben werden. Kopieren Sie dieses Token in Ihre Zwischenablage.

  4. Öffnen Sie Postman und öffnen Sie die gewünschte Sammlung nach Bedarf.

  5. Stellen Sie in Postman sicher, dass "GET" als Anforderungstyp ausgewählt ist, und klicken Sie auf die Registerkarte "Autorisierung" unter der Dropdown-Liste "Anforderungstyp".

  6. Wählen Sie im Dropdown-Menü "TYP" der Autorisierung die Option "Inhaber-Token" aus.

  7. Fügen Sie Ihr zuvor kopiertes "Access Token", das Sie vom OAuth-Spielplatz kopiert haben, in das Feld "Token" ein, das in Postman angezeigt wird.

  8. Fast dort! Um zu testen, ob die Dinge funktionieren, fügen Sie https://mybusiness.googleapis.com/v4/accounts/ in die Haupt-URL-Eingabeleiste in Postman ein und klicken Sie auf die Schaltfläche Senden. In der Antwort sollte eine JSON-Liste mit Konten angezeigt werden, die ungefähr so ​​aussieht:

    
    {
        "accounts": [
            {
                "name": "accounts/REDACTED",
                "accountName": "REDACTED",
                "type": "PERSONAL",
                "state": {
                    "status": "UNVERIFIED"
                }
            },
            {
                "name": "accounts/REDACTED",
                "accountName": "REDACTED",
                "type": "LOCATION_GROUP",
                "role": "OWNER",
                "state": {
                    "status": "UNVERIFIED"
                },
                "permissionLevel": "OWNER_LEVEL"
            }
        ]
    }
    
irmalcol
quelle
0

Die aktuelle Antwort ist veraltet. Hier ist der aktuelle Ablauf:

Wir werden die YouTube-Daten-API für unser Beispiel verwenden. Nehmen Sie die entsprechenden Änderungen vor.

Stellen Sie sicher, dass Sie die gewünschte API für Ihr Projekt aktiviert haben .

Erstellen Sie den OAuth 2.0-Client

  1. Besuch https://console.cloud.google.com/apis/credentials
  2. Klicken Sie auf CREDENTIALS ERSTELLEN
  3. Wählen Sie die OAuth-Client-ID aus
  4. Wählen Sie als Anwendungstyp die Option Webanwendung
  5. Fügen Sie einen Namen hinzu
  6. Fügen Sie den folgenden URI für autorisierte Umleitungs-URIs hinzu
https://oauth.pstmn.io/v1/callback
  1. Klicken Sie auf Speichern
  2. Klicken Sie auf den soeben generierten OAuth-Client
  3. Klicken Sie in der oberen Leiste auf JSON HERUNTERLADEN und speichern Sie die Datei irgendwo auf Ihrem Computer.

Wir werden die Datei später verwenden, um Postman zu authentifizieren.

Autorisieren Sie den Postboten über den OAuth 2.0-Client

  1. Wählen Sie auf der Registerkarte Auth unter TYPE OAuth 2.0
  2. Geben Sie als Zugriffstoken das Zugriffstoken ein, das sich in der in Schritt 9 heruntergeladenen Datei client_secret_ [YourClientID] .json befindet
  3. Klicken Sie auf Get New Access Token
  4. Stellen Sie sicher, dass Ihre Einstellungen wie folgt sind:

Klicken Sie hier, um die Einstellungen anzuzeigen

Alles andere, was Sie brauchen, finden Sie in Ihrer .json-Datei.

  1. Klicken Sie auf Request Token
  2. Ein neuer Browser-Tab / Fenster wird geöffnet
  3. Melden Sie sich nach dem Öffnen der Registerkarte "Browser" über das entsprechende Google-Konto an
  4. Akzeptieren Sie den Zustimmungsbildschirm
  5. Erledigt

Ignorieren Sie die Browsermeldung "Nicht sicher" usw. Diese wird angezeigt, bis Ihre App von Google-Mitarbeitern überprüft wurde. In diesem Fall wird es immer angezeigt, da Postman die App ist.

Zenahr
quelle