Skip to content

Instantly share code, notes, and snippets.

@Repox
Created April 12, 2018 06:04
Show Gist options
  • Save Repox/64ac4b3582f8ac42a6a1b41667db7440 to your computer and use it in GitHub Desktop.
Save Repox/64ac4b3582f8ac42a6a1b41667db7440 to your computer and use it in GitHub Desktop.

Revisions

  1. Repox created this gist Apr 12, 2018.
    49 changes: 49 additions & 0 deletions send.php
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,49 @@
    <?php

    /**
    * This serves as an example of how to use the Google API PHP Client
    * with Firebase Cloud Messaging Service.
    *
    * The client can be found here:
    * https://github.com/google/google-api-php-client
    *
    * At the time of writing this, there's no Service object for the correct
    * scope for Firebase Messaging, so here's an example of how this can be
    * done with provididing the scope manually.
    *
    * Info regarding authorization and requests can be found here:
    * https://firebase.google.com/docs/cloud-messaging/server
    */

    require 'vendor/autoload.php';

    $client = new Google_Client();

    // Authentication with the GOOGLE_APPLICATION_CREDENTIALS environment variable
    $client->useApplicationDefaultCredentials();

    // Alternatively, provide the JSON authentication file directly.
    $client->setAuthConfig(__DIR__.'/auth.json');

    // Add the scope as a string (multiple scopes can be provided as an array)
    $client->addScope('https://www.googleapis.com/auth/firebase.messaging');

    // Returns an instance of GuzzleHttp\Client that authenticates with the Google API.
    $httpClient = $client->authorize();

    // Your Firebase project ID
    $project = "myproject-4e6ed";

    // Creates a notification for subscribers to the debug topic
    $message = [
    "message" => [
    "topic" => "debug",
    "notification" => [
    "body" => "This is an FCM notification message!",
    "title" => "FCM Message",
    ]
    ]
    ];

    // Send the Push Notification - use $response to inspect success or errors
    $response = $httpClient->post("https://fcm.googleapis.com/v1/projects/{$project}/messages:send", ['json' => $message]);