Google Cloud Scheduler - 不尊重 HTTP 标头

Mar*_*cin 3 google-cloud-platform google-cloud-scheduler

我正在尝试使用 Google Cloud Scheduler 将推送发送到我的应用程序:

gcloud beta scheduler jobs create http PUSH --schedule="0 * * * *" --uri="https://fcm.googleapis.com/fcm/send" --description="desc" --headers="Authorization: key=<AUTHKEY> --http-method="POST" --message-body="{\"to\":\"/topics/allDevices\",\"priority\":\"low\",\"data\":{\"success\":\"ok\"}}"    
Run Code Online (Sandbox Code Playgroud)

结果总是401 Unauthorized。发出命令后:

gcloud beta scheduler jobs describe PUSH
Run Code Online (Sandbox Code Playgroud)

我没有得到这些标头:

description: desc
httpTarget:
  body: eyJ0byI6Ii90b3BpY3MvYWxsnByaW9yaXR5IjoRGV2aWNlcyIsIiaGlnaCIsImRhdGEiOnsic3VjY2VzcyI6Im9rIn19  <--- THIS IS WEIRD
  headers:
    Content-Type: application/octet-stream
    User-Agent: Google-Cloud-Scheduler
  httpMethod: POST
  uri: https://fcm.googleapis.com/fcm/send
lastAttemptTime: '2018-11-07T20:32:37.657408Z'
name: projects/..../locations/europe-west1/jobs/PUSH
retryConfig:
  maxBackoffDuration: 3600s
  maxDoublings: 16
  maxRetryDuration: 0s
  minBackoffDuration: 5s
schedule: 0 * * * *
scheduleTime: '2018-11-07T21:00:00.681498Z'
state: ENABLED
status:
  code: 16
timeZone: Etc/UTC
userUpdateTime: '2018-11-07T20:29:15Z'
Run Code Online (Sandbox Code Playgroud)

Joh*_*ley 5

第一个问题关于身体:

body:eyJ0byI6Ii90b3BpY3MvYWxsnByaW9yaXR5IjoRGV2aWNlcyIsIiaGlnaCIsImRhdGEiOnsic3VjY2VzcyI6Im9rIn19 <--- 这很奇怪

这是base64编码

{\"到\":\"/topics/allDevices\",\"优先级\":\"低\",\"数据\":{\"成功\":\"确定\"}}

Google 正在获取您的信息--message-body并将其编码为base64.

接下来关于标题问题。您的“--headers”中有几个错误。

--headers="授权:密钥=AUTHKEY

您在 后面缺少引号AUTHKEY。我假设这个问题只是创建问题的编辑错误。(请注意,我无法弄清楚如何在此响应中包含小于和大于字符)。

但是, for 的语法--headers是错误的。所--headersKEY=VALUE,并非如此KEY:VALUE。在此示例中,KEYisAuthorization和 the VALUEis key=AUTHKEY

--headers="Authorization=key=AUTHKEY"
Run Code Online (Sandbox Code Playgroud)

  • 示例: `--headers="Authorization=key=AUTHKEY, Content-Type=application/json"` (3认同)