Search code examples
androidgoogle-app-enginefirebasefirebase-authenticationgoogle-cloud-endpoints

Send Firebase Token from Android to Google Cloud Endpoints


I am integrating Firebase Authentication into my Android App. After successful login, the Android App will call some Google Cloud Endpoints running on Google App Engine.

So I need to pass the Firebase Token I received from the Authentication to the Google Cloud Endpoints. I am using the following code to call the endpoints (source)

MyApi.Builder builder = new MyApi.Builder(AndroidHttp.newCompatibleTransport(),
                new AndroidJsonFactory(), null)
myApiService = builder.build();

myApiService.sayHi(name).execute();

So how can I forward the token to my backend?


Solution

  • You can use an HttpRequestInitializer to inject the token:

    HttpRequestInitializer requestInitializer = new HttpRequestInitializer() {
      @Override
      public void initialize(HttpRequest request) throws IOException {
        HttpHeaders httpHeaders = new HttpHeaders();
        httpHeaders.setAuthorization("Bearer " + getFirebaseToken());
        request.setHeaders(httpHeaders);
      }
    };
    
    MyApi.Builder builder = new MyApi.Builder(AndroidHttp.newCompatibleTransport(),
                new AndroidJsonFactory(), requestInitializer)
    myApiService = builder.build();