如何在 PHP REST API 中使用 Google REST API 对 FCM Rest API 进行身份验证?

问题描述 投票:0回答:1

我需要使用 FCM REST API 发送通知。但是,我目前无法使用 API 密钥进行身份验证。下面是打的API。

https://fcm.googleapis.com/v1/projects/proj-name/messages:send?key=XXX

我收到的错误如下:

{
    "error": {
        "code": 401,
        "message": "Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
        "status": "UNAUTHENTICATED"
    }
}

后端采用 PHP,因此没有任何支持的包。因此,我尝试使用它来发送通知。上面的 API 似乎采用 oauth 2 访问令牌或登录 cookie 或某些身份验证方法。但是,我需要从我自己的 REST API 发送它。如何从 PHP 向上述 API 进行身份验证并正确发送通知?

更新::

链接:使用服务帐户进行身份验证

此 API 记录了如何使用服务帐户进行身份验证。特别是下面几行内容如下:

使用凭据铸造访问令牌
除非您使用自动处理授权的管理 SDK,否则您需要创建访问令牌并将其添加到发送请求。

将您的 Firebase 凭据与您的首选语言的 Google Auth 库一起使用,以检索短期 OAuth 2.0 访问令牌:

但它没有提供/记录任何铸造短期访问令牌的方法。

php firebase api rest google-cloud-platform
1个回答
0
投票

经过大量挖掘,结果证明使用 Google 自己的 PHP Auth 库非常简单,它返回与 Bearer 一起使用的 access_token:

  1. 安装库:

作曲家需要谷歌/身份验证

  1. PHP 代码:

     use Google\Auth\Credentials\ServiceAccountCredentials;  
    
     putenv('GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-credentials.json');
     $scopes = ['https://www.googleapis.com/auth/firebase.messaging'];
     $sac = new ServiceAccountCredentials($scopes, ServiceAccountCredentials::fromEnv());
     $authToken = $sac->fetchAuthToken();
     $access_token = $authToken['access_token'] //use $access_token as Bearer
    
© www.soinside.com 2019 - 2024. All rights reserved.