如何将Firebase身份validation与Google应用程序引擎端点集成

我正在为移动应用程序编写一个后端服务器。 后端在谷歌应用程序引擎上运行,并用Java编写。

我希望用户能够使用联合身份(如Facebook)进行login。

我看到,谷歌支持这种手机应用程序通过validation身份validation。 将Firebase身份validation与我当前的应用引擎终结点集成的最佳方式是什么?

我已经使用云平台的数据存储,并且不希望与Firebase数据库一起使用,只使用authentication方法。

谢谢。

Solutions Collecting From Web of "如何将Firebase身份validation与Google应用程序引擎端点集成"

我也在寻找这个答案。 我迄今为止最好的5c是

  • 使用FireBase从控制台设置login方法等
  • 使用FireBase UI(beta版)进行网页或iOS / Android的“联合身份validation提供程序集成”来设置validationstream程
  • 在您的Web / iOS / Android客户端上回传令牌/身份validation详细信息,并将其传递到您的云端点,例如HTTP请求头
  • 注入javax.servlet.http.HttpServletRequest到您的端点方法(只需添加一个参数和谷歌与自动注入请求对象)
  • 创build一个端点将调用每个请求(需要身份validation)的方法,该方法将处理您作为HTTP请求头传递的凭证的validation
  • 使用FireBase Java SDK来调用FireBasevalidation凭据(为了做到这一点,您需要从Firebase控制台导出JSONconfiguration),并使用它们加载SDK,例如,在您的一个servlet中:
@Override public void init(ServletConfig config) { try{ InputStream in = config.getServletContext().getResourceAsStream("/WEB-INF/firebase-privatekey.json"); FirebaseOptions options = new FirebaseOptions.Builder() .setServiceAccount(in) .setDatabaseUrl("YOUR_DATABASE_URL") .build(); FirebaseApp.initializeApp(options); log.info("Authentication enabled"); } catch(Throwable t) { t.printStackTrace(); log.warning("AUTHENTICATION DISABLED. Only public resources will be available"); } } 

您应该可以将Google云端点用作应用程序前面的身份validation代理。 terminal支持通过configuration您的OpenAPI模板来validationFirebase身份validation令牌 :

 # Configure Firebase as an AuthN provider securityDefinitions: firebase: authorizationUrl: "" flow: "implicit" type: "oauth2" # Replace YOUR-PROJECT-ID with your project ID in the issuer and audiences fields x-google-issuer: "https://securetoken.google.com/YOUR-PROJECT-ID" x-google-audiences: "YOUR-PROJECT-ID" x-google-jwks_uri: "https://www.googleapis.com/service_accounts/v1/metadata/x509/securetoken@system.gserviceaccount.com" # Add Firebase as an authN provider to specific endpoints... security: - firebase: [] 

或者,您可以使用Firebase Admin SDK编写validation您的令牌的validation中间件:

 FirebaseAuth.getInstance().verifyIdToken(idToken) .addOnSuccessListener(new OnSuccessListener<FirebaseToken>() { @Override public void onSuccess(FirebaseToken decodedToken) { String uid = decodedToken.getUid(); // ... } });