我正在编写适用于移动应用的后端服务器。
后端运行在谷歌应用引擎上,使用Java编写。
我希望用户可以使用联合身份登录,例如Facebook。
我发现谷歌通过Firebase认证支持移动应用的此类身份验证。 如何将Firebase身份验证与我的当前应用程序引擎端点集成最佳?
我已经使用云平台数据存储,并且不希望使用Firebase数据库,只需使用身份验证方法即可。
谢谢。
我正在编写适用于移动应用的后端服务器。
后端运行在谷歌应用引擎上,使用Java编写。
我希望用户可以使用联合身份登录,例如Facebook。
我发现谷歌通过Firebase认证支持移动应用的此类身份验证。 如何将Firebase身份验证与我的当前应用程序引擎端点集成最佳?
我已经使用云平台数据存储,并且不希望使用Firebase数据库,只需使用身份验证方法即可。
谢谢。
@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 Cloud Endpoints用作您的应用程序前面的身份验证代理。通过配置您的OpenAPI模板,Endpoints支持验证Firebase身份验证令牌:
# 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编写身份验证中间件,验证您的令牌:
FirebaseAuth.getInstance().verifyIdToken(idToken)
.addOnSuccessListener(new OnSuccessListener<FirebaseToken>() {
@Override
public void onSuccess(FirebaseToken decodedToken) {
String uid = decodedToken.getUid();
// ...
}
});