POST 在 Chrome gmail 扩展的 background.js 中请求 400 错误请求
POST request 400 Bad Request in background.js of Chrome Extension for gmail
构建一个 Chrome 扩展,试图通过 users.labels:create 方法创建一个新标签。我成功地检索了访问令牌,我认为权限设置适当但我仍然得到 400,除此之外我找不到关于这个主题的更多信息,尽管我怀疑我遗漏了一些非常明显的东西。
(如果我的代码没有泄露,这是我的第一个 Web 项目,因此非常感谢您的帮助,感谢您的宝贵时间。)
background.js
var postRequestUrl = "https://www.googleapis.com/gmail/v1/users/me/labels?access_token=" + accessToken;
$.ajax({
url: postRequestUrl,
method: "POST",
contentType: "application/json",
data: {
name: "posting test label",
labelListVisibility: "labelShow",
messageListVisibility: "show"
}
}).done(function(msg){
alert("Success?")
})
Manifest.json
{
"manifest_version": 2,
"key": "redacted>",
"name": "<redacted>",
"description": "Description",
"version": "0.0.2.0",
"default locale": "en",
"icons": { "128": "imgs/pledge_pin.png"},
"content_scripts" : [
{
"matches": ["*://mail.google.com/mail/*"],
"js": ["js/jquery.js", "js/compose.js", "bower_components/jqnotifybar/jquery.notifyBar.js"],
"css": ["css/stylesheet.css", "bower_components/jqnotifybar/css/jquery.notifyBar.css"]
}
],
"background": {
"scripts": ["scripts/background.js", "js/jquery.js"]
},
"permissions": [
"identity",
"https://www.googleapis.com/*"
],
"oauth2": {
"client_id": "<redacted>",
"scopes": ["https://www.googleapis.com/auth/gmail.modify", "https://www.googleapis.com/auth/gmail.labels"]
}
}
完整错误消息
POST https://www.googleapis.com/gmail/v1/users/me/labels?access_token=<token redacted> 400 (Bad Request)
n.ajaxTransport.k.cors.a.crossDomain.send @ jquery.js:4
n.extend.ajax @ jquery.js:4
(anonymous function) @ background.js:106
propertyNames.forEach.target.(anonymous function) @ extensions::SafeBuiltins:19
EventImpl.dispatchToListener @ extensions::event_bindings:395
propertyNames.forEach.target.(anonymous function) @ extensions::SafeBuiltins:19
$Array.forEach.publicClass.(anonymous function) @ extensions::utils:94
EventImpl.dispatch_ @ extensions::event_bindings:379
EventImpl.dispatch @ extensions::event_bindings:401
propertyNames.forEach.target.(anonymous function) @ extensions::SafeBuiltins:19
$Array.forEach.publicClass.(anonymous function) @ extensions::utils:94
messageListener @ extensions::messaging:188
propertyNames.forEach.target.(anonymous function) @ extensions::SafeBuiltins:19
EventImpl.dispatchToListener @ extensions::event_bindings:395
propertyNames.forEach.target.(anonymous function) @ extensions::SafeBuiltins:19
$Array.forEach.publicClass.(anonymous function) @ extensions::utils:94
EventImpl.dispatch_ @ extensions::event_bindings:379
EventImpl.dispatch @ extensions::event_bindings:401
propertyNames.forEach.target.(anonymous function) @ extensions::SafeBuiltins:19
$Array.forEach.publicClass.(anonymous function) @ extensions::utils:94
dispatchOnMessage @ extensions::messaging:316
您的请求中有错字 URL。更新如下:
var postRequestUrl = "https://www.googleapis.com/gmail/v1/users/me/labels?access_token=" + accessToken;
您忘记提供请求负载的内容类型,在本例中为 JSON。 application/json
会成功的。此外,请求负载中不需要 userId: "me"
,您必须将数据字符串化。
$.ajax({
url: "https://www.googleapis.com/gmail/v1/users/me/labels?access_token={YOUR_API_KEY}",
method: "POST",
contentType: "application/json", // Content type has to be specified.
data: JSON.stringify({ // You have to stringify your data.
name: "Example", // userId: "me" is not needed.
labelListVisibility: "labelShow",
messageListVisibility: "show"
}),
success: function(msg){
alert(JSON.stringify(msg));
},
error: function(msg){
alert(JSON.stringify(msg));
}
});
构建一个 Chrome 扩展,试图通过 users.labels:create 方法创建一个新标签。我成功地检索了访问令牌,我认为权限设置适当但我仍然得到 400,除此之外我找不到关于这个主题的更多信息,尽管我怀疑我遗漏了一些非常明显的东西。
(如果我的代码没有泄露,这是我的第一个 Web 项目,因此非常感谢您的帮助,感谢您的宝贵时间。)
background.js
var postRequestUrl = "https://www.googleapis.com/gmail/v1/users/me/labels?access_token=" + accessToken;
$.ajax({
url: postRequestUrl,
method: "POST",
contentType: "application/json",
data: {
name: "posting test label",
labelListVisibility: "labelShow",
messageListVisibility: "show"
}
}).done(function(msg){
alert("Success?")
})
Manifest.json
{
"manifest_version": 2,
"key": "redacted>",
"name": "<redacted>",
"description": "Description",
"version": "0.0.2.0",
"default locale": "en",
"icons": { "128": "imgs/pledge_pin.png"},
"content_scripts" : [
{
"matches": ["*://mail.google.com/mail/*"],
"js": ["js/jquery.js", "js/compose.js", "bower_components/jqnotifybar/jquery.notifyBar.js"],
"css": ["css/stylesheet.css", "bower_components/jqnotifybar/css/jquery.notifyBar.css"]
}
],
"background": {
"scripts": ["scripts/background.js", "js/jquery.js"]
},
"permissions": [
"identity",
"https://www.googleapis.com/*"
],
"oauth2": {
"client_id": "<redacted>",
"scopes": ["https://www.googleapis.com/auth/gmail.modify", "https://www.googleapis.com/auth/gmail.labels"]
}
}
完整错误消息
POST https://www.googleapis.com/gmail/v1/users/me/labels?access_token=<token redacted> 400 (Bad Request)
n.ajaxTransport.k.cors.a.crossDomain.send @ jquery.js:4
n.extend.ajax @ jquery.js:4
(anonymous function) @ background.js:106
propertyNames.forEach.target.(anonymous function) @ extensions::SafeBuiltins:19
EventImpl.dispatchToListener @ extensions::event_bindings:395
propertyNames.forEach.target.(anonymous function) @ extensions::SafeBuiltins:19
$Array.forEach.publicClass.(anonymous function) @ extensions::utils:94
EventImpl.dispatch_ @ extensions::event_bindings:379
EventImpl.dispatch @ extensions::event_bindings:401
propertyNames.forEach.target.(anonymous function) @ extensions::SafeBuiltins:19
$Array.forEach.publicClass.(anonymous function) @ extensions::utils:94
messageListener @ extensions::messaging:188
propertyNames.forEach.target.(anonymous function) @ extensions::SafeBuiltins:19
EventImpl.dispatchToListener @ extensions::event_bindings:395
propertyNames.forEach.target.(anonymous function) @ extensions::SafeBuiltins:19
$Array.forEach.publicClass.(anonymous function) @ extensions::utils:94
EventImpl.dispatch_ @ extensions::event_bindings:379
EventImpl.dispatch @ extensions::event_bindings:401
propertyNames.forEach.target.(anonymous function) @ extensions::SafeBuiltins:19
$Array.forEach.publicClass.(anonymous function) @ extensions::utils:94
dispatchOnMessage @ extensions::messaging:316
您的请求中有错字 URL。更新如下:
var postRequestUrl = "https://www.googleapis.com/gmail/v1/users/me/labels?access_token=" + accessToken;
您忘记提供请求负载的内容类型,在本例中为 JSON。 application/json
会成功的。此外,请求负载中不需要 userId: "me"
,您必须将数据字符串化。
$.ajax({
url: "https://www.googleapis.com/gmail/v1/users/me/labels?access_token={YOUR_API_KEY}",
method: "POST",
contentType: "application/json", // Content type has to be specified.
data: JSON.stringify({ // You have to stringify your data.
name: "Example", // userId: "me" is not needed.
labelListVisibility: "labelShow",
messageListVisibility: "show"
}),
success: function(msg){
alert(JSON.stringify(msg));
},
error: function(msg){
alert(JSON.stringify(msg));
}
});