8

Благодаря this answer Я могу подключиться к Firebase 3 через HTTP REST API и по электронной почте/паролю. Вход в этот API возвращает токен доступа, который используется для доступа к базе данных Firebase. Этот токен доступа истекает через 1 час. Токен обновления также возвращается после входа в систему, который я могу использовать для обновления токена доступа. Вот то, что я делаю, а именно:Как получить доступ к моей базе данных Firebase через HTTP REST API?

Метод:

POST 

URL:

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

Payload:

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

Ответ:

{ 
    "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" 
} 

В случае освежать мой маркер доступа:

URL:

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

Payload:

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

Ответ:

{ 
    "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>" 
} 

Как мне получить доступ к базе данных через HTTP REST API, учитывая, что у меня есть доступ к tok ан?

ответ

9

Таким образом, после общения с технической поддержкой, вот мой ответ:

В правилах базы данных, включают в себя что-то вроде этого, которое совместимо с тем, что вы делаете:

{ 
"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" 
} 
    } 
    } 
} 

И в базе данных , создайте таблицу users и в ней создайте таблицу с именем вашего <user-id> учетной записи электронной почты/пароля аутентификации, которую вы используете. Внутри этой таблицы есть информация, с которой вы сможете получить доступ через ваш access-key.

Затем отправить запрос, как это:

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

Где access-key это ключ, который может быть известен как idToken, id_Token или access_key в JSON ответы от Google.

+3

Это лучший ответ, который я получил. Документ Firebase настолько запутанный и запутанный! Они даже не говорят об idToken нигде в документах REST. Какой позор. Большое спасибо за это. – Richeek

+0

Привет, Я пытаюсь разрешить некоторые json-файлы быть общедоступными, а другие нет. Я делал это '{" rules ": {" publicjson ": {" .read ": true," .write ": false}," .read ":" auth! = Null "," .write ": false} } '. У меня нет проблем с доступом к 'publicjson'. Однако я не могу получить доступ к любому другому json, который подпадает под правило '.read:: auth! = Null '. Я стараюсь, чтобы почтальон выполнял запрос 'GET' с помощью' Authorization: Bearer xxx', но не повезло. Знаете ли вы что-нибудь об этом? Идея заключалась бы в том, чтобы иметь ключ доступа, хранящийся в приложении, и использоваться в запросах. Нет таблицы пользователя.Спасибо –

+0

@Richeek Знаете ли вы что-нибудь о том, что я спросил выше? ^^^ Спасибо –

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