0

大家好,我正在尝试使用 GAS 插入帖子但失败了..你能告诉我我错了什么...提前谢谢....

这是我的代码

`function sendHttpPost() {
 var API_KEY = 'my api key';
 var scope = "http://www.blogger.com/feeds/";       
 var oAuthConfig = UrlFetchApp.addOAuthService("blogger");
 oAuthConfig.setRequestTokenUrl("https://www.google.com/accounts/OAuthGetRequestToken?scope="+scope);
 oAuthConfig.setAuthorizationUrl("https://www.google.com/accounts/OAuthAuthorizeToken");
 oAuthConfig.setAccessTokenUrl("https://www.google.com/accounts/OAuthGetAccessToken");
 oAuthConfig.setConsumerKey("anonymous");
 oAuthConfig.setConsumerSecret("anonymous");
  var payload = 
    {
  "kind": "blogger#post",
  "blog": {
    "id": "486683248036684073"
  },
  "title": "A new post",
  "content": "With <b>exciting</b> content..."
}
  var options =
    {
      "contentType":"application/json",
      "oAuthServiceName" : "blogger",
      "oAuthUseToken" : "always",
      "method" : "POST",
      "payload" : payload
    };

  var respon = UrlFetchApp.fetch("https://www.googleapis.com/blogger/v3/blogs/486683248036684073/posts?key="+API_KEY, options);

这是错误消息

返回代码 400 的请求失败。服务器响应:{“error”:{“errors”:[{“domain”:“global”,“reason”:“parseError”,“message”:“Parse Error”}],“代码”:400,“消息”:“解析错误”}}

4

2 回答 2

0

我相信您在需要 oauth2时尝试使用 oauth1 。这里已经有一个未答复的请求。使用 Google 应用脚本实现 oauth 2 真的很痛苦,所以我尝试构建一个可以满足需求的库(双氧库)——它的工作方式有点像oauth2 游乐场,但它不那么漂亮。通过一些工作,您应该能够通过博客使其适应您的需要。

于 2013-03-15T13:18:41.293 回答
0

我尝试了 Harold 的库,但在成功检索 OAuth 令牌后,我遇到了同样的错误。

但是,当我通过 API Explorer 发出与脚本中相同的 JSON 请求时,它已被处理: https ://developers.google.com/blogger/docs/3.0/reference/posts/insert

[更新]

我要把它拿回来。此代码有效。我只是替换了有效负载变量并将 JSON 请求直接放入 URL fetch options中。因此,将该有效负载变量传递给选项变量存在一些问题。

function testBlogger() {

  var payload =
      {
        "kind": "blogger#post",
        "blog": {
          "id": "YOUR_BLOG_ID"
        },
        "title": "New post",
        "content": "With content..."
      };

  var options =
      {
        "method" : "post",
        "headers" : { "Authorization" : "Bearer YOUR_ACTIVE_TOKEN"},
        "contentType" : "application/json",
        "payload" : '{ "kind": "blogger#post", "blog": { "id": "YOUR_BLOG_ID" }, "title": "New post", "content": "With content..." }'
      };

  try {

    var result = UrlFetchApp.fetch(
      "https://www.googleapis.com/blogger/v3/blogs/YOUR_BLOG_ID/posts",
      options);

    Logger.log(result);

  } catch (e) {
    Logger.log(e);
  }
}
于 2013-04-22T16:20:39.037 回答