javascript - 使用 Google Apps 脚本将 HTTPPost 发送到 GCM 时出现错误=缺少注册

标签 javascript android json google-apps-script google-cloud-messaging

我正在尝试使用 google apps 脚本将 http post 发送到 GCM 服务器。我有设备 ID 和正确的凭据。这是我正在使用的代码:

function doThat(){
  var url = "https://android.googleapis.com/gcm/send";
  var options = {
    "method": "post",
    "headers": {
      "Authorization": "key=myAPIKEY",
      "Content-Type":"application/json"
    },
    "payload": {
      "data": {
        "score": "5x1",
        "time": "15:10"
      },
      "registration_ids": ["regid1"]
    }
  };
  var response = UrlFetchApp.fetch(url, options);
  Logger.log("Response: "+response.toString());
}

这里,myAPIKEY 和 regid1 是占位符。 一个等效的 java 代码适用于此。因此,凭据似乎没有问题。 我经历了this android 文档的链接,以查找要发送到 GCM 服务器的 json 格式(那些在下面编辑此代码的人请注意,api key 和其他 key 直接取自 android GCM 网站上的 link。这不是我的。所以 PLS不要更改它):

    Content-Type:application/json
Authorization:key=AIzaSyB-1uEai2WiUapxCs2Q0GZYzPu7Udno5aA

{
  "registration_ids" : ["APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx..."],
  "data" : {
    ...
  },
}

注意:如果 我总是在执行日志中的 Logger.log() 语句中收到“Error=Missing Registration”。 Java 等效代码工作完美。但是谷歌脚本给出了这个错误。那么这里出了什么问题?

最佳答案

我认为您需要设置 contentType 高级参数并对您的负载进行字符串化。请参阅此示例以获取指示:

https://github.com/entaq/GoogleAppsScript/blob/master/Android/SharedDb.gs

关于javascript - 使用 Google Apps 脚本将 HTTPPost 发送到 GCM 时出现错误=缺少注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25024045/

相关文章:

未授予 Android 权限

android - 运行 AOSP 测试

android - 如何使序列化字符串转换为字符串数组?

jquery - 未捕获的类型错误 :Undefined is not a function

python - 是否有可能将对象数组(json)作为突变的输入字段传递? Graphite 烯- python

javascript - 如何使用 NativeScript 的 BarcodeScanner 插件

javascript - 如何将数组从服务函数传递到 Controller (AngularJs)中的范围?

ruby - 使用 Ruby 将 XML 转换为 JSON 并将其保存为单独的文件

javascript - 在 AngularJS 1.6 中悬停时在 md-select/md-options 上显示图像/背景

javascript - Webpack jQuery 和 jQuery.lazy() TypeError : q is undefined