Gadget OAUTH请求返回内部服务器错误
我正在开发一个在谷歌日历页面中运行的html、JS小工具。我的OAUTH授权 工作正常,但仅持续1小时。如果我每5分钟重复一次相同的请求,我会有一个小时的好结果,然后我会永远得到[500]内部服务器错误。原因是一个坏标记。我在1小时后得到一个新的,我可以通过console.logshindig.auth.getSecurityToken和网络选项卡makeRequest details、Form data、st看到它,但它会导致[500]内部服务器错误。2小时后情况保持不变:我获得了新令牌,但它导致[500]内部服务器错误。我做错了什么Gadget OAUTH请求返回内部服务器错误,oauth,google-calendar-api,google-gadget,opensocial,Oauth,Google Calendar Api,Google Gadget,Opensocial,我正在开发一个在谷歌日历页面中运行的html、JS小工具。我的OAUTH授权 工作正常,但仅持续1小时。如果我每5分钟重复一次相同的请求,我会有一个小时的好结果,然后我会永远得到[500]内部服务器错误。原因是一个坏标记。我在1小时后得到一个新的,我可以通过console.logshindig.auth.getSecurityToken和网络选项卡makeRequest details、Form data、st看到它,但它会导致[500]内部服务器错误。2小时后情况保持不变:我获得了新令牌,但它
<?xml version="1.0" encoding="UTF-8" ?>
<Module>
<ModulePrefs title="test_gadget">
<Require feature="opensocial-0.8" />
<Require feature="locked-domain"/>
<Require feature='auth-refresh'/>
<OAuth>
<Service name="google">
<Access url="https://www.google.com/accounts/OAuthGetAccessToken" method="GET" />
<Request url="https://www.google.com/accounts/OAuthGetRequestToken?scope=https://www.googleapis.com/auth/tasks" method="GET" />
<Authorization url="https://www.google.com/accounts/OAuthAuthorizeToken?oauth_callback=http://oauth.gmodules.com/gadgets/oauthcallback" />
</Service>
</OAuth>
</ModulePrefs>
<Content type="html">
<![CDATA[
<!-- shindig oauth popup handling code -->
<!-- <script src="http://gadget-doc-examples.googlecode.com/svn/trunk/opensocial-gadgets/popup.js"></script> -->
<script type="text/javascript" src="https://rawgit.com/Appiens/daybyday_gadget/master/javascript/shindig.js"></script>
<script type="text/javascript">
var requestInterval = 5 * 60 * 1000;
var timerFetch = -1;
var API_KEY = 'AIzaSyCuKllVMlv0ENk8Skg8_-IKM1Cs9GeL-NU';
function fetchData() {
var params = {};
url = "https://www.googleapis.com/tasks/v1/users/@me/lists?key=" + API_KEY;
params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.JSON;
params[gadgets.io.RequestParameters.AUTHORIZATION] = gadgets.io.AuthorizationType.OAUTH;
params[gadgets.io.RequestParameters.OAUTH_SERVICE_NAME] = "google";
params[gadgets.io.RequestParameters.OAUTH_USE_TOKEN] = "always";
params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.GET;
gadgets.io.makeRequest(url, OnFetchData, params);
}
function OnFetchData(response) {
var d = new Date();
var token = shindig.auth.getSecurityToken();
if (response.oauthApprovalUrl) {
var popup = shindig.oauth.popup({
destination: response.oauthApprovalUrl,
windowOptions: null,
onOpen: function() { showOneSection('waiting'); },
onClose: function() { fetchData(); }
});
var personalize = document.getElementById('personalize');
personalize.onclick = popup.createOpenerOnClick();
var approvaldone = document.getElementById('approvaldone');
approvaldone.onclick = popup.createApprovedOnClick();
showOneSection('approval');
}
else if (response.data) {
console.log(d + ' ' + token);
var taskLists = [];
taskLists = response.data.items;
for(var i=0; i< taskLists.length; i++) {
console.log(taskLists[i].title);
}
if (document.getElementById('main').style.display = 'none') {
showOneSection('main');
}
}
else {
console.log(d + ' ' + token);
console.log( JSON.stringify(response));
if (document.getElementById('main').style.display = 'none') {
showOneSection('main');
}
}
timerFetch = setTimeout(fetchData , requestInterval);
}
function showOneSection(toshow) {
var sections = [ 'main', 'approval', 'waiting'];
for (var i=0; i < sections.length; ++i) {
var s = sections[i];
var el = document.getElementById(s);
if (s === toshow) {
el.style.display = "block";
} else {
el.style.display = "none";
}
}
}
gadgets.util.registerOnLoadHandler(fetchData);
</script>
<div id="main" style="display: none;">
</div>
<div id="approval" style="display: none">
<a href="#" id="personalize">Personalize this gadget</a>
</div>
<div id="waiting" style="display: none">
Please click
<a href="#" id="approvaldone">I've approved access</a>
once you've approved access to your data.
</div>
]]>
</Content>
</Module>
你仍然有这个问题吗?是的,我仍然有。在获得新令牌后,你能检查进一步的请求是否使用新令牌吗?或者如果他们继续使用过期的?