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.
Google API PHP Client - Firebase Cloud Messaging Service v1 example
<?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]);
@drussdev
Copy link

drussdev commented May 30, 2024

Hello, Im using the service-account settings. However, I still get the error SENDER_ID_MISMATCH. Can someone help me?

@abhishekpwo
Copy link

@drussdev

The SENDER_ID_MISMATCH error typically occurs when the Firebase Cloud Messaging (FCM) request is sent with a token that doesn't match the sender ID associated with the service account credentials being used. Here’s a step-by-step example of how to correctly set up and use the Google API PHP Client for Firebase Cloud Messaging Service v1, ensuring you avoid this error:

Key Points to Ensure

  1. Service Account JSON File: Make sure the path to the service account JSON file is correct.
  2. Firebase Project ID: Ensure that the project ID matches the one in your Firebase project settings.
  3. Device Token: Verify that the device token is valid and corresponds to the correct Firebase project.

Troubleshooting SENDER_ID_MISMATCH

  • Token Validity: Ensure that the token you are using is from the same Firebase project associated with the service account credentials.
  • Correct Project ID: Double-check that the firebaseProjectId in the script matches the project ID from the Firebase Console.
  • Scope and Permissions: Ensure that the service account has the necessary permissions to send FCM messages. The scope used in the script (https://www.googleapis.com/auth/firebase.messaging) should be correct.

If you've verified all these points and still encounter the issue, it's possible that the token has expired or is invalid. In such cases, try generating a new device token and test again.

@drussdev
Copy link

@abhishekpwo , Key Points to Ensure::3 is my reason. Thank you.

@abhishekpwo
Copy link

Great! Welcome.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment