我需要构建一个连接到Google日历并获取指定事件集的小型Web应用程序。我已阅读documentation,我了解到我需要对用户进行身份验证,以便在Google Developer Console上创建我的应用。
我尝试使用弹出窗口实现身份验证(我为此使用fancybox)。这是登录数据所在的<div>
:<div id="login-popup" style="display:none"></div>
这是我用来调用auth.php文件的JS代码:
$.get("/auth.php", function(result) {
$('#login-popup').append(result);
$.fancybox({
href: "#login-popup",
autoSize: true,
width: "60%",
fitToView: true
});
});
最后,这是将GET请求发送到Google的API的PHP代码:
$ch = curl_init();
if($ch) {
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/plain'));
curl_setopt($ch, CURLOPT_HTTPGET, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_URL, $query);
$result = curl_exec($ch);
curl_close($ch);
}
else {
throw new RuntimeException("Hiba történt a távoli adatok elérése közben!");
}
echo json_encode($result);
所以这个弹出窗口会在此之后出现,因为它应该是:
但是,在我输入凭据后,它会将我重新搜索到Google的登录网站(https://accounts.google.com/ServiceLoginAuth)。
我的问题:
我需要能够从这个弹出窗口中获取数据,以获取我以后可以在Calendar API调用中使用的访问令牌。我需要做些什么来实现这个目标?
答案 0 :(得分:5)
您被重定向的原因是因为您实际上是将Google的页面加载到iframe中。输入时会调用通常在提交时登录页面上调用的所有内容。所以基本上你只是在你的网站上打开谷歌窗口。
实现此目的的正确方法是使用谷歌的oauth API。 (https://developers.google.com/accounts/docs/OAuth2或更具体地说,https://developers.google.com/accounts/docs/OAuth2Login)
您需要注册项目并获取开发人员/ API密钥。
Google文档非常全面,因此您应该能够轻松地关注它们!