0

我需要将从标准化电子邮件中解析出来的事件自动发布到共享的谷歌日历。解析电子邮件以创建我可以(并且已经完成)的 JSON 对象。但我从未真正使用过JSON——我不知道如何将它提交到 Google 日历。我已经阅读并重新阅读了谷歌的文档,但我并没有清楚地理解它。首先,我不明白如何在没有用户实际输入接受的情况下完成身份验证,这会破坏这个应用程序的目的。

基本上,我是一名设计师转为业余开发人员,我最擅长 PHP,而 Javascript 则明显落后。我已经构建了一个 web 应用程序,它将定期调用一个 HTTP 请求到一个 php 文档,该文档应该找到带有要发布的事件的新电子邮件,解析它们并发布它们包含的事件。除了发布部分之外,这一切都已准备就绪并正在等待。如果有人可以帮助我了解在概念上需要有一个安静、自动的程序来发布到 Google 日历,我将非常感激。到目前为止 - 只是试图让我的脚在水中 - 这就是我已经到达的地方:

<?php 
$url = "https://www.googleapis.com/calendar/v3/calendars/".$calendar."/events?sendNotifications=false&key={".$api_key."}";
?>

<script>
function goGoogle() {
data = "a json object will go here";
xhr = new XMLHttpRequest();
xhr.open("POST", "<?php echo $url?>", true);
xhr.setRequestHeader("Content-type", "application/json");
xhr.send(data); 
xhr.onreadystatechange = function() {
    alert(xhr.responseText);
}
}
</script>
<button onclick="goGoogle()">Sigh</button>

alert(xhr.responseText)电话中,我在第 2 和第 3 阶段得到了这个:

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "required",
    "message": "Login Required",
    "locationType": "header",
    "location": "Authorization"
   }
  ],
  "code": 401,
  "message": "Login Required"
 }
}

现在,我意识到我实际上并没有提供任何身份验证,所以我并不惊讶它失败了。问题是我不知道如何进行身份验证。帮助!?:)

4

1 回答 1

1

首先,请确保我理解 - 您有一个应用程序可以接收来自不同用户的电子邮件,并且您希望将这些电子邮件中的内容发布到需要身份验证的共享 Google 日历(否则您将能够将这些事件发布到我的我根本不喜欢的日历)。此外,您的应用需要在不涉及最终用户的情况下执行此操作。但是,您有一些共享日历的凭据/身份验证,您可以在应用程序中对其进行编码。(否则你可能会再次发布到我的日历)。最后,您在日历中创建的条目将由您的应用“拥有”(也就是说,您不会代表其中一位用户输入它们 - 因为您没有他们的凭据,而且他们是无法授予权限)。

如果这一切都是正确的,我认为您可能开始的地方是使用 ClientLogin 身份验证到 Google Calendar API。相关文档位于: https
://developers.google.com/google-apps/calendar/v2/developers_guide_protocol#AuthClientLogin 您的应用将使用您必须访问共享日历的凭据/身份验证信息。

该页面还可能为您提供其他信息。

如果我误解了您的问题或者我的回答过于含糊,我深表歉意。我没有在代码中访问过 CalendarAPI,但过去几周我一直在研究身份验证和 OAuth2 代码。

于 2012-06-09T02:39:07.803 回答