【问题标题】:fcm auth error in post request发布请求中的 fcm 身份验证错误
【发布时间】:2018-12-02 02:40:57
【问题描述】:

我有一个使用 fcm 来通知的应用程序,当我通过控制台发送消息时一切正常,但是当我尝试通过 php(curl post)或 postman(firefox 扩展)发送时,我得到了一个身份验证错误(即使使用键)

string(304) "{ "error": { "code": 401, "message": "请求缺少所需的身份验证凭据。预期的 OAuth 2 访问令牌、登录 cookie 或其他有效的身份验证凭据。见https://developers.google.com/identity/sign-in/web/devconsole-project.", "status": "UNAUTHENTICATED" } } "

我从 firebase 项目控制台获得了密钥 我的php代码是

  public function send_FCM(){
// Method - 1
$fcmUrl = 'https://fcm.googleapis.com/v1/projects/anal.........719/messages:send';
$notification = array(
  "to"=>"/topic/cidade396",
  "notification"=>array(
    "body"=>"test 123"
  )
);
 $headers = [
    'Authorization: key=AIz.........9KWwy5BisxXYbA8',
    'Content-Type: application/json'
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$fcmUrl);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($notification));
$result = curl_exec($ch);
curl_close($ch);
var_dump($result);
return true;

} 有谁知道我该如何解决这个问题?

【问题讨论】:

    标签: php firebase curl google-cloud-messaging firebase-cloud-messaging


    【解决方案1】:

    旧版 FCM 使用您从 Firebase 控制台获取的密钥。使用您正在使用的 FCM v1,您可以使用从服务帐户密钥创建的更安全的凭据。您在 Firebase 控制台中的 Project Settings>Service Accounts 下下载服务帐户,然后单击“Generate new private key”。有关更多信息,请参阅Firebase guide。获取凭据的 PHP 说明是 here

    格式为

    Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
    

    但它不适用于 API 密钥。您需要传递 Google 凭据,您可以在上面的链接中找到如何生成该凭据。

    【讨论】:

      【解决方案2】:

      authorizing HTTP v1 send requests 文档中的示例显示 Authorization 标头值以 Bearer 而不是 key= 开头:

      $headers = [
          'Authorization: Bearer AIz.........9KWwy5BisxXYbA8',
          'Content-Type: application/json'
      ];
      

      【讨论】:

      • 我现在尝试使用 Bearer 和 Bearer key= 但没有用
      • 只是Bearer 而不是Bearer key=
      • 您是如何获得访问令牌的?使用我在答案中链接的文档中的说明?它不是旧 API 中使用的服务器密钥(来自项目设置的云消息传递选项卡)。
      猜你喜欢
      • 1970-01-01
      • 2020-07-10
      • 2020-11-05
      • 1970-01-01
      • 2017-06-01
      • 2023-02-26
      • 2016-11-14
      • 2017-04-05
      • 1970-01-01
      相关资源
      最近更新 更多