在旧版本的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,你有这方面的更新,因为数据库的秘密现在被弃用? –