python - 如何修复谷歌脚本中的“不允许登录信息”错误?
问题描述
我正在尝试通过谷歌表格使用他们的 API 在 Shopify 中创建产品。每当我尝试创建 HTTP 请求时,都会收到以下错误:
“不允许登录信息”
为了测试 API,我创建了一个或多或少相同的 python 脚本。当我运行 Python 脚本时,产品会按计划创建。但我就是无法让它通过我的谷歌表格工作。
谷歌脚本代码(不工作):
function create_product() {
var url = "https://XXXX:XXXX@XXXX.myshopify.com/admin/api/2019-04/products.json";
var data = {
"product": {
"title": 'test 1',
"body_html": 'test 1',
"vendor": 'test 1',
"product_type": 'test 1',
"tags" : 'test 1'
}
};
var params = {
method : 'POST',
contentType : 'application/json',
payload : JSON.stringify(data),
};
var post = UrlFetchApp.fetch(url, params);
}
蟒蛇代码:
import requests
url = "https://XXXX:XXXX@XXXX.myshopify.com/admin/api/2019-04/products.json"
data = {
"product": {
"title": 'test 1',
"body_html": 'test 1',
"vendor": 'test 1',
"product_type": 'test 1',
"tags" : 'test 1'}
}
post = requests.post(url=url, json=data)
我希望这两个脚本都能给我相同的结果,但似乎只有 Python 脚本有效。当我尝试发布 http 帖子时,“不允许登录信息”错误一直显示在 google 脚本中。
解决方案
根据这个Stack Overflow答案和 Google bug tracker 上的这个问题,URL 中的 API 凭据不能正常工作。考虑将它们添加到授权标头中。POST 请求的示例代码如下
var response = UrlFetchApp.fetch(url, {
"method": "post",
'contentType': 'application/json',
'payload': JSON.stringify(payload),
"headers": {
"Authorization": "Basic " + Utilities.base64Encode("username_here:password_here")
}
});
推荐阅读
- angular-material - 当我启动一个对话框时,背景位置已经改变
- python - 我的 mongodb 数据库需要很长时间才能查询
- excel - 插入散点图只有1个点,标题实际上是一个值
- azure - 如何在 Azure 逻辑应用中设置机密
- android - Flutter 错误:无法找到 gradlew 脚本。检查bat文件是否存在或android文件夹是否可读
- sql-server - 查找此表结构的缺失记录的更便宜的方法是什么?
- github - 使用 qsub 提交到服务器的批处理作业中的 git 推送到 github
- java - 全新 IntelliJ IDEA 安装中的 Gradle 同步失败
- botframework - 在 groupChat 对话更新的活动对象中未收到组的名称。团队的 MSBot 框架 (nodejs)
- c++ - 应用一个简单的曲面细分评估着色器