8

this answer sayesinde Firebase 3'e HTTP REST API'sı ve bir e-posta/şifre üzerinden bağlanabiliyorum. Bu API ile giriş yapmak Firebase Veritabanına erişmek için kullanılan bir erişim belirteci döndürür. Bu erişim jetonu 1 saat sonra sona eriyor. Oturum açma işleminden sonra, erişim belirtecimi yenilemek için kullanabileceğim bir yenileme belirteci de döndürülür. İşte özellikle yapıyorum budur:Firebase Veritabanına HTTP REST API aracılığıyla nasıl erişirim?

Yöntem:

POST 

URL:

https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyPassword?key=<my-firebase-api-key> 

Taşıma kapasitesi:

{ 
    email: "<email>", 
    password: "<password>", 
    returnSecureToken: true 
} 

Yanıt:

{ 
    "kind": "identitytoolkit#VerifyPasswordResponse", 
    "localId": "<firebase-user-id>", // Use this to uniquely identify users 
    "email": "<email>", 
    "displayName": "", 
    "idToken": "<provider-id-token>", // Use this as the auth token in database requests 
    "registered": true, 
    "refreshToken": "<refresh-token>", 
    "expiresIn": "3600" 
} 
Benim erişim verisini yenilemede durumunda

:

URL:

https://securetoken.googleapis.com/v1/token?key=<my-firebase-api-key> 

Taşıma kapasitesi:

{ 
    grant_type: "refresh_token", 
    refresh_token: "<refresh-token>" 
} 

Yanıt:

{ 
    "access_token": "<access-token>", 
    "expires_in": "3600", 
    "token_type": "Bearer", 
    "refresh_token": "<refresh-token>", 
    "id_token": "<id-token>", 
    "user_id": "<user-id>", 
    "project_id": "<project-id>" 
} 

nasıl aracılığıyla benim veritabanına erişim yok Erişim şifremi kullandığım için HTTP REST API tr?

cevap

9

Yani teknik destek ile iletişim sonra, burada benim yanıt:

{ 
"rules": { 
"users": { 
"$user_id": { 
// grants write access to the owner of this user account 
// whose uid must exactly match the key ($user_id) 
".write": "$user_id === auth.uid", 
".read": "$user_id === auth.uid" 
} 
    } 
    } 
} 

Ve veritabanınızda: ne yaptığınızı uyumlu böyle bir şey şunlardır veritabanı kurallarında

, bir users tablosu oluşturun ve bunun içinde kullandığınız kimlik doğrulama e-postası/parola hesabınızın <user-id> adının bulunduğu bir tablo oluşturun. Bu tabloda access-key aracılığıyla erişebileceğiniz bilgiler var.

Sonra böyle bir istek göndermek:

access-key
https://samplechat.firebaseio-demo.com/users/<user-id>.json?auth=<access-key> 

Google'dan JSON yanıtları idToken, id_Token veya access_key olarak bilinen edilebilir anahtardır.

+3

Bu, sahip olduğum en iyi cevaptır. Firebase belgesi çok dağınık ve kafa karıştırıcı! REST dokümanlarındaki herhangi bir yerde idToken hakkında bile konuşmadılar. Utanç verici. Bunun için çok teşekkürler. – Richeek

+0

Merhaba, bazı json dosyalarının herkese açık olmasına izin vermeye çalışıyorum ve diğerleri değil. Bu "{" kurallar "ı yapıyordum: {" publicjson ": {" .read ": true," .write ": false}," .read ":" auth! = Null "," .write ": false} } '. Ben publicjson'a erişmede sorun yaşıyorum. Ancak, ".read": "auth! = Null" 'kuralının altına düşen başka bir json'a erişemiyorum. Ben imzacı: Taşıyıcı xxx ile bir 'GET' isteği yapmak için postacı deniyorum ama şans yok. Bu konuda bir şey biliyor musunuz? Fikir sadece uygulamada depolanan erişim anahtarına sahip olacak ve isteklerde kullanılacaktır. Kullanıcı masasına gerek yok.Teşekkürler –

+0

@Richeek Yukarıda istediklerimden bir şey biliyor musunuz? ^^^ Teşekkürler –