Как исправить ошибку «Информация о входе запрещена» из скрипта Google? - PullRequest
0 голосов
/ 30 июня 2019

Я пытаюсь создавать продукты в Shopify с их API через лист Google.Всякий раз, когда я пытаюсь создать запрос HTTP, я получаю следующую ошибку:

«Запрещена информация для входа в систему» ​​

Чтобы протестировать API, я создал более или менее идентичный питонскрипт.Когда я запускаю скрипт Python, продукт создается как запланировано.Но я просто не могу заставить его работать через мой лист Google.

КОД СКРИПТА GOOGLE (НЕ РАБОТАЕТ):

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Сценарий, кажется, работает.Ошибка «Информация о входе в систему запрещена» продолжает появляться в скрипте Google, когда я пытаюсь сделать сообщение http.

1 Ответ

0 голосов
/ 30 июня 2019

В соответствии с этим ответом переполнения стека и этой проблемой в системе отслеживания ошибок Google, учетные данные API в URL не работают должным образом. Попробуйте добавить их в заголовок авторизации. Пример кода для запроса POST будет выглядеть как

var response = UrlFetchApp.fetch(url, {
            "method": "post",
            'contentType': 'application/json',
            'payload': JSON.stringify(payload),
            "headers": {
                "Authorization": "Basic " + Utilities.base64Encode("username_here:password_here")
                }
            });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...