【发布时间】:2016-07-17 06:14:43
【问题描述】:
我的设置:
- 在 Google App Engine 上托管的 Java 后端包含使用 Google Cloud Endpoints 创建的 API
- 包含为上述端点生成的客户端库的移动客户端应用程序。还与 Firebase 集成以进行身份验证和数据库。
我的意图是移动客户端应用程序的用户将能够使用 Firebase 身份验证登录到移动应用程序,然后连接到任何后端 API,这些 API 依次进行一些处理,然后读取或写入数据往返于 Firebase 数据库。
为了保护服务器上的 API,我认为我必须使用 Firebase 服务器 SDK 的内置 verifyIdToken() 方法(请参阅 Firebase 上的 Verifying ID Tokens)来解码从客户端应用程序。由于 verifyIdToken() 异步运行,我如何将它与 GAE 中的 API 方法集成?到目前为止,我有类似以下内容:
@ApiMethod(name = "processAndSaveToDB", httpMethod = "post")
public Response processAndSaveToDB(@Named("token") String token) {
Response response = new Response();
// Check if the user is authenticated first
FirebaseAuth.getInstance().verifyIdToken(idToken)
.addOnSuccessListener(new OnSuccessListener() {
@Override
public void onSuccess(FirebaseToken decodedToken) {
String uid = decodedToken.getUid();
// do bulk of processAndSaveToDB() method
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(Exception e) {
// throw unauthorized exception
});
return response;
}
【问题讨论】:
-
您是否使用 App Engine 柔性环境或 App Engine 标准环境实现了这一目标?
标签: google-app-engine firebase firebase-realtime-database google-cloud-endpoints firebase-authentication