如何将Google App引擎端点模块连接到firebase?
我读了这个https://cloud.google.com/solutions/mobile/firebase-app-engine-android-studio,但它使用" For App Engine Java Servlet Module
"
我们是否需要google app engine java端点模块的应用服务器,因为我们需要GCM的应用服务器?
答案 0 :(得分:1)
端点,GCM和Firebase - 这些都是独立的东西。
当你说app服务器时,我想你正在谈论一个GAE应用程序,所以你应该注意Firebase不适用于GAE(你必须留下一个额外的线程监听,这不是GAE如何工作)。
如果您是这些新手,我建议您一次开始使用一个。您可以使用Firebase创建一个没有任何其他应用的应用。 (但要小心 - Firebase是一种非常昂贵的专有服务。)
或者,忘记Firebase并编写一个使用任一端点与GAE对话的应用程序,或者只是一个普通的servlet。
答案 1 :(得分:0)
您可以将Cloud Endpoints与Firebase集成。虽然数据存储可能是一个更好的选择,具体取决于您的情况,我需要与现有的firebase集成。 以下是如何执行此操作的示例。这来自一个工作的例子,我改变了一些名字。
注意:此示例每次都在firebase应用程序中,您需要检查firebase应用程序是否已经初始化,或者第二次点击端点时您将收到错误,
<dependency>
<groupId>com.google.endpoints</groupId>
<artifactId>endpoints-framework</artifactId>
<version>${endpoints.framework.version}</version>
</dependency>
<dependency>
<groupId>com.google.firebase</groupId>
<artifactId>firebase-admin</artifactId>
<version>5.3.0</version>
</dependency>
package com.example.mypackage;
import com.google.firebase.FirebaseApp;
import com.google.firebase.FirebaseOptions;
import com.google.firebase.auth.FirebaseCredentials;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.*;
import java.io.IOException;
import java.io.FileNotFoundException;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.logging.Logger;
import java.util.logging.Level;
public class MyClass {
private final static Logger LOGGER = Logger.getLogger(Echo.class.getName());
public static void main() {
try {
FileInputStream serviceAccount = new FileInputStream("WEB-INF/my-service-account.json");
FirebaseOptions options = new FirebaseOptions.Builder()
.setCredential(FirebaseCredentials.fromCertificate(serviceAccount))
.setDatabaseUrl("https://my-project.firebaseio.com/")
.build();
FirebaseApp.initializeApp(options);
final FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference ref = database.getReference("/foo");
ref.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String post = dataSnapshot.toString();
LOGGER.log( Level.INFO, post);
System.out.println(post);
}
@Override
public void onCancelled(DatabaseError databaseError) {
LOGGER.log( Level.INFO, "cancel");
// ...
}
});
ref.setValue("bar");
} catch (Exception e) {
// some error handling code here
LOGGER.log( Level.SEVERE, e.toString(), e );
}
}
}