Не удается получить доступ к базе данных FireBase через HTTP / REST ошибка 403 запрещено
Swift + Vapor framework для сервера + Xcode 8.1
Я пытаюсь прочитать базу данных Firebase в реальном времени, делая HTTP-запросы к моей БД, но я получаю разрешение отказано.
эти шаги:
1. создать JWT подписать его с секретным ключом, загруженным из "console.developers.google.com"
2. отправьте запрос POST на сервер OAuth2 и получите токен доступа
3. отправьте запрос GET в базу данных firebase с токеном доступа, полученным от сервера OAuth2.
Я получаю "отказано в разрешении", HTTP / 1.1 403 Forbidden
// the header of the JSON Web Token (first part of the JWT)
let headerJWT = ["alg":"RS256","typ":"JWT"]
// the claim set of the JSON Web Token
let jwtClaimSet =
["iss":"firebase-adminsdk-kxx5h@fir-30c9e.iam.gserviceaccount.com",
"scope":"https://www.googleapis.com/auth/firebase.database", //is this the correct API to access firebase database?
"aud":"https://www.googleapis.com/oauth2/v4/token",
"exp": expDate,
"iat": iatDate]
drop.get("access") { request in
var accesstoken = "ya29.ElqhA-....XXXX"
let responseFirebase = try drop.client.get("https://fir- 30c9e.firebaseio.com/data/Users.json",
headers: ["Authorization":"Bearer (accesstoken)"],
query: [:])
print("FirebaseResponse_is (responseFirebase)")
return "success"
}
3 ответов
TLDR; попробуйте поставить auth=<TOKEN>
в строке запроса вместо использования заголовка Authorization.
документация Firebase неясна о том, как это работает. Согласно документации, есть три метода, которые должны работать.
-
auth=<TOKEN>
в строке запроса (ссылке) -
access_token=<TOKEN>
в строке запроса (ссылке) -
Authorization: Bearer <TOKEN>
в заголовке запроса (ссылке)
Я не уверен, что все три метода действительно работать. Я использую метод 1 в своем приложении, поэтому я знаю, что он работает точно.
на scope
ключ отсутствует значение https://www.googleapis.com/auth/userinfo.email
let jwtClaimSet =
["iss":"firebase-adminsdk-kxx5h@fir-30c9e.iam.gserviceaccount.com",
"scope": "https://www.googleapis.com/auth/firebase.database
https://www.googleapis.com/auth/userinfo.email",
"aud":"https://www.googleapis.com/oauth2/v4/token",
"exp": expDate,
"iat": iatDate]
Я нашел ответ!--6-->просмотр групп google здесь
headers: ["Authorization":"Authorization: Bearer \(accesstoken)"],
должно быть
headers: ["Authorization":"Bearer \(accesstoken)"],