2016-07-29 27 views
4

Ich versuche Postman zu verwenden, um REST-API-Aufrufe an Firebase zu tun. Ich habe es geschafft, vom Firebase zu lesen, wenn meine Sicherheitsregel allen Benutzern erlauben soll, einschließlich nicht autorisierter Benutzer.mit Postboten auf Firebase-REST-API zugreifen

aber wenn ich diese Regel verwenden:

{"rules":{".read": "auth != null", ".write": "auth != null"}} 

I 'Fehler' bekommen: 'Zugriff verweigert' von Postbote. Ich habe das Anfrage-Token für googles web oauth2.0-Client erstellt und das authorization_code-Token zurückgeholt.

Ich habe versucht, Token in der URL und in der Kopfzeile zu verwenden, versuchte es mit GET & POST-Anfrage und immer noch verweigert werden.

bitte helfen. Vielen Dank im Voraus

+0

Sie erhalten eine Zugriffstoken mit dem richtigen Umfang benötigen, ein Berechtigungscode ist nur ein Zwischenberechtigungsnachweis verwendet, um eine OAuth 2.0-Zugriffstoken zu erhalten. Sobald Sie es haben, können Sie es in der Kopfzeile übergeben als 'Autorisierung: Bearer ' –

+0

noch Berechtigung verweigert. Der Bereich, den ich verwendet habe, ist googleapis.com/auth/firebase Wie kann ich testen, ob das Token funktioniert. Ich bin nicht sicher, wo der Fehler ist: 1. Google Credits? 2. Firebase Auth/Regeln? 3. oauth vom Postboten? –

+0

siehe meine aktualisierten Kommentare zum Beitrag unten :) –

Antwort

3

Probieren Sie etwas wie dieses

https://your-database-url/users.json?auth=YOUR_AUTH_KEY 

Respone ist ein JSON Ihrer Benutzer Knoten

+0

noch Berechtigung verweigert. Der Umfang, den ich verwendet habe, ist https://www.googleapis.com/auth/firebase –

+0

https://project-5345143141106430789.firebaseio.com/users.json?access_token = ya29.Ci8wAzAqJp346BXPzy0NgeHCqZeF7w82FS_zaVPa902ncwtMpC4V-c8X9SFcQIujDg –

+1

KORREKTUR: so habe ich access_token Parameter anstelle von auth verwendet. Deshalb habe ich die Erlaubnis verweigert. nachdem ich es in AUTH geändert habe, bekomme ich den '" Fehler ":" Auth-Token konnte nicht analysiert werden. "' wenn ich mein zurückgegebenes access_token benutze. pro Firebase-Dokumentation können Sie entweder mit authentifiziertem Token ODER dem App-Secret der Firebase darauf zugreifen. mit letzterem als AUTH-Wert habe ich die Daten bekommen. , aber die Verwendung von authentifizierten Token ist immer noch resulation Fehler –

2

Für mich ist es wie folgt gearbeitet:

https://your-database-url/users.json?auth=YOUR_AUTH_KEY

Wo Kannst du diesen AUTH_KEY bekommen?

Sie erhalten diesen Schlüssel von Ihrem Project Settings -> Database -> Secret Key

+0

Projekteinstellungen -> Datenbank -> geheimer Schlüssel? Es gibt keinen solchen Pfad – CodyBugstein

+2

Zurzeit wird auf den geheimen Schlüssel in Ihrer Firebase-Konsole zugegriffen: Projekteinstellungen -> Dienstkonten (Tab) -> Datenbankgeheimnisse Bewegen Sie dann den Mauszeiger über das Geheimnis und ein 'SHOW' Knopf wird angezeigt . Klicken Sie auf diesen, dann können Sie es sehen. Beachten Sie auch, dass Ihre Datenbank-URL über die Konsole gefunden werden kann, indem Sie im linken Menü auf den Eintrag Datenbank klicken. – omarjebari

+1

Versuchen Sie auch, den Simulator in der Firebase-Konsole unter Datenbank-> Regeln zu verwenden. Es hilft Ihnen beim Aufbau einer gültigen authentifizierten Anfrage, die Sie dann in den Postboten kopieren können. – omarjebari

8

Die Antworten oben nicht für mich arbeiten.

Was für mich arbeiten würde

Projekteinstellungen (oben links Gang) ->Dienstkonten (ganz rechts tab) ->Datenbank Secrets (Menü links) -> Scroll schweben nach unten, über die bulltets und klicken anzeigen

Verwenden Sie diese als auth Schlüssel, dh .../mycollection.json?auth=HERE

+0

.json ist ein Muss für Rest Api –

1

ich habe eine Postma n Voranforderungsskript zum Erstellen einer Authentifizierung: Bearer JWT. Sollte beim Testen von APIs mit Firebase Auth viel Copy-Paste speichern. https://gist.github.com/moneal/af2d988a770c3957df11e3360af62635

Kopie des Skripts zum Zeitpunkt der Buchung:

/** 
* This script expects the global variables 'refresh_token' and 'firebase_api_key' to be set. 'firebase_api_key' can be found 
* in the Firebase console under project settings then 'Web API Key'. 
* 'refresh_token' as to be gathered from watching the network requests to https://securetoken.googleapis.com/v1/token from 
* your Firebase app, look for the formdata values 
* 
* If all the data is found it makes a request to get a new token and sets a 'auth_jwt' environment variable and updates the 
* global 'refresh_token'. 
* 
* Requests that need authentication should have a header with a key of 'Authentication' and value of '{{auth_jwt}}' 
* 
* Currently the nested assertions silently fail, I don't know why. 
*/ 
pm.expect(pm.globals.has('refresh_token')).to.be.true; 
pm.expect(pm.globals.has('firebase_api_key')).to.be.true; 

var sdk = require('postman-collection'), 
    tokenRequest = new sdk.Request({ 
    url: 'https://securetoken.googleapis.com/v1/token', 
    method: 'POST', 
    body: { 
     mode: 'urlencoded', 
     urlencoded: [{ 
      type: 'text', 
      key: 'key', 
      value: pm.globals.get('firebase_api_key') 
     }, 
     { 
      type: 'text', 
      key: 'grant_type', 
      value: 'refresh_token' 
     }, 
     { 
      type: 'text', 
      key: 'refresh_token', 
      value: pm.globals.get('refresh_token') 
     }, 
     ] 
    } 
    }); 

pm.sendRequest(tokenRequest, function(err, response) { 

    pm.test('request for access token was ok', function() { 
    pm.expect(response).to.be.ok(); 
    }); 

    const json = response.json(); 
    pm.expect(json).to.an('object'); 

    pm.test('response json has needed properties', function() { 

    pm.expect(json).to.have.own.property('access_token'); 
    pm.expect(json).to.have.own.property('token_type'); 
    pm.expect(json).to.have.own.property('refresh_token'); 

    const accessToken = json.access_token; 
    const tokenType = json.token_type; 
    const refreshToken = json.refresh_token; 

    pm.environment.set('auth_jwt', tokenType + ' ' + accessToken); 
    pm.globals.set('refresh_token', refreshToken); 

    }); 

});