尝试将 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: Myself
和 Who 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) 来接收来自外部服务的数据?
我在尝试将 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: Myself
和 Who 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) 来接收来自外部服务的数据?