google calendar apiで質問です!
google calendar api とjavascriptを使ってGoogle Calendarに予定の書き込みを行いたいです!
しかし、ログインの処理がうまくいっていないためうまく動作しません。
下記のプログラムでログインボタンを押すと、googleアカウントのページに飛び要求されたページは無効です。と表示されてしまいます。
ここのログイン処理がうまくいかないためCalendarへの書き込みが行えないのですが、どのようにしたらいいでしょうか?
よろしくお願いします。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=UTF-8" />
<title>calendar test</title>
<script type="text/javascript"
src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
<!--
google.load("gdata","2");
google.setOnLoadCallback(getMyFeed);
function getMyFeed(){
var service = null;
var url = "http://www.google.com/calendar/feeds/calendar id/public/full";
service = new google.gdata.calendar.CalendarService
("calendar-sample");
query = new google.gdata.calendar.CalendarEventQuery(url);
query.setOrderBy(google.gdata.calendar.
CalendarEventQuery.ORDERBY_START_TIME);
query.setSortOrder(google.gdata.calendar.
CalendarEventQuery.SORTORDER_DESCENDING);
query.setSingleEvents(true);
query.setMaxResults(10);
var start = new google.gdata.DateTime.fromIso8601
("2013-01-01");
var end = new google.gdata.DateTime.
fromIso8601("2013-12-31");
query.setMinimumStartTime(start);
query.setMaximumStartTime(end);
service.getEventsFeed(query, callback, handleError);
}
function callback(result) {
var entries = result.feed.entry;
var res = "";
for (var i = 0; i < entries.length; i++) {
var entry = entries[i];
var title = entry.getTitle().getText();
var times = entry.getTimes();
res += (i + 1) + ": " + title + " (" + times[0].startTime + ")<br />";
}
document.getElementById("view").innerHTML = res;
}
function handleError(error) {
alert(error);
}
function Login(){
var scope = 'https://www.google.com/calendar/feeds/';
var token = google.accounts.user.login(scope);
}
function doAction(){
var service = null;
var url = "http://www.google.com/calendar/feeds/calendar id/private/full";
service = new google.gdata.calendar.CalendarService
("calendar-sample");
var scope = "https://www.google.com/calendar/feeds/";
token = google.accounts.user.checkLogin(scope);
if (token == ""){
alert("ログインしていません。");
return;
}
var t1 = document.getElementById("time1").value;
var t2 = document.getElementById("time2").value;
var title = document.getElementById("title").value;
var start = new google.gdata.DateTime.fromIso8601(t1);
var end = new google.gdata.DateTime.fromIso8601(t2);
var entry = new google.gdata.calendar.CalendarEventEntry();
entry.setTitle(google.gdata.atom.Text.create(title));
var when = new google.gdata.When();
when.setStartTime(start);
when.setEndTime(end);
entry.addTime(when);
var func = function(result) {
alert("イベントを追加。");
getMyFeed();
}
service.insertEntry(url,entry,func,handleError,
google.gdata.calendar.CalendarEventEntry);
}
//-->
</script>
</head>
<body>
<h1>サンプル</h1>
<img src="authentication.gif">
<input type="button" value="Login" onclick="Login();">
<hr>
<input type="text" id="time1" value="2013-01-01"><br>
<input type="text" id="time2" value="2013-01-01"><br>
<input type="text" id="title"><br>
<input type="button" value="add" onclick="doAction();">
<hr>
<div id="view" style="color:#096;"></div>
</body>
</html>
お礼
ご回答ありがとうございました。 やってみましたが無理でした。