首页 > 解决方案 > 如何修复谷歌脚本中的“不允许登录信息”错误?

问题描述

我正在尝试通过谷歌表格使用他们的 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 脚本中。

标签: pythonhttpgoogle-sheetsshopify

解决方案


根据这个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")
                }
            });

推荐阅读