在舊版本的Firebase中,我用Java編寫的服務器應用程序將使用祕密和JWT令牌生成器與我的後端進行身份驗證。然後,在任何時候,我都可以撥打Firebase.getAuth().getToken()
並在HTTP調用中重新使用該令牌作爲auth
參數。通過REST API重新使用firebase-server-sdk憑證
隨着新的firebase-server-sdk
,我將如何重新使用REST API有限的服務帳戶憑證/令牌?
Map<String, Object> auth = new HashMap<String, Object>();
auth.put("uid", "server-app");
FirebaseOptions options = new FirebaseOptions.Builder()
.setDatabaseUrl(Environment.FIREBASE_URL)
.setServiceAccount(MyClass.class.getResourceAsStream("/keys/dev.json"))
.setDatabaseAuthVariableOverride(auth)
.build();
FirebaseApp.initializeApp(options);
那當我使用SDK認購/寫入到某些位置所有的偉大工程 - 特別是那些需要server-app
UID位置。但是我在服務器應用程序中使用REST,因爲我希望我的服務器應用程序進行同步讀取,而Firebase只能通過REST API支持這些內容。
FirebaseRestClient firebaseRest = new RestAdapter.Builder()
.setEndpoint(Environment.FIREBASE_URL)
.setRequestInterceptor(new RequestInterceptor() {
@Override
public void intercept(final RequestFacade request) {
request.addQueryParam("access_token", FirebaseAuth.getInstance().createCustomToken("server-app"));
}
})
.build().create(FirebaseRestClient.class);
我試着將兩個access_token
和auth
PARAM。似乎createCustomToken
方法會生成有效的JWT,但REST API沒有響應。
當我通過在createCustomToken
返回值作爲auth
PARAM,我得到以下信息:
"error" : "Missing claim 'kid' in auth header."
當我通過在createCustomToken
返回值作爲access_token
PARAM,我得到的基本Permission denied
API響應。
有沒有一種簡單的方法可以在REST API調用中重用我現有的firebase-server-sdk
憑據?
Abe,你有這方面的更新,因爲數據庫的祕密現在被棄用? –