尝试将 PHP cURL post 功能用于 Google Apps 脚本时出现 401 未经授权错误

401 Unauthorized error when attempting to use PHP cURL post functionality to Google Apps Script

我在尝试将 PHP cURL 与 Google Apps 脚本一起使用时出现错误 "The requested URL returned error: 401 Unauthorized"。

我一直在遵循以下指南,但似乎没有任何效果:

Posting data to google apps script using php/curl

我昨天发布了这个附加问题,它帮助我弄清楚我需要获得所有 SSL 证书:
How to use Google Scripts with cURL PHP? [duplicate]

我的 test.php 页面:

<div id="body">
    <form name="testing" method="post">
        Email: <input type="text" name="email"><br>
        <input type="submit" value="Submit" onClick="return OnTest1();">
    </form>
</div>

<script>
    function OnTest1()
    {
        document.testing.action = "testsubmit.php";
        document.testing.submit();
        return true;
    }
</script>

我的 testsubmit.php 页面:

<?php   
    $url = 'https://script.google.com/a/meditech.com/macros/s/[SCRIPT ID]/exec';
    $data['email'] = $_POST['email'];
    $ch = curl_init();

    curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-type: multipart/form-data"));
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);    
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_FAILONERROR,true);

    $result = curl_exec($ch);

    if(curl_error($ch))
    {
        echo curl_error($ch);
    }
    else
    {
        echo $result;
    }

    curl_close($ch);
?>

还有我的 Google Apps 脚本:

function doPost(e)
{
  return ContentService.createTextOutput(e.parameter.email);
}

我希望能够在某个时候将一堆信息传递到我的 php 页面中,以便处理到我设置的数据库中,一旦它被转储到我需要的数据库中将所有信息发送到 Google Apps 脚本,然后发送电子邮件。

感谢任何能提供帮助的人。

是的,使用 Execute the app as: MyselfWho has access to the app: CompanyDomain.com 绝对没问题,但同时你必须确保 google 表明你来自 CompanyDomain.com只要。你现在怎么样了?

我认为为此您需要在请求中传递身份验证详细信息,可能类似于 OAuth/2 令牌。首先为发出请求的用户获取令牌,然后在身份验证 header 中传递该令牌,以便 google 识别用户。

或者,如果您不想那样做,那么您可以切换到 Who has access to the app: Anyone, even anonymous,这样您就不需要证明您的身份了。

选择最适合您需要的。

你也可以在这里查看我的回答如何创建一个 doPost(e) 来接收来自外部服务的数据?