如何将Google App引擎端点模块与firebase集成?

时间:2016-02-09 11:06:55

标签: google-app-engine firebase

如何将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的应用服务器?

2 个答案:

答案 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 );
        }
    }
}