嗨所有iam尝试使用GAS插入帖子但失败了..你能告诉我我错了吗... thx提前....
这里是我的代码
`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”},“code”:400,“message”:“Parse Error”}}
答案 0 :(得分:0)
我相信你在oauth2 is required时尝试使用oauth1。 已经有关于here的未答复请求。 使用Google应用程序脚本实现oauth 2真的很痛苦,所以我尝试构建一个可以满足需求的库(dioxygen library) - 它的工作方式有点像oauth2 playground但不太漂亮。 通过一点点工作,您应该能够通过博主来适应您的需求。
答案 1 :(得分:0)
我尝试了Harold的库,但在成功检索到OAuth令牌后,我最终得到了同样的错误。
但是,当我通过API Explorer发出与我的脚本相同的JSON请求时,它被处理: https://developers.google.com/blogger/docs/3.0/reference/posts/insert
[UPDATE]
我正在收回它。这段代码有效。我刚刚替换了有效负载变量,并将JSON请求直接放入网址提取选项。因此,将有效负载变量传递到选项变量时存在一些问题。
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);
}
}