Google API身份验证

时间:2010-10-25 00:55:03

标签: javascript google-chrome google-chrome-extension google-api

使用Google Javascript API我正在尝试对自己进行身份验证(本地)以在我的日历中创建新事件。但是,当我执行脚本的登录部分时,我收到一个错误(见下文),说明我的“下一个”参数是错误的或丢失的。我正在关注“创建单个事件”的数据api interactive samples

更新1:从地址栏我看到“下一步”设置如下:

next=file:///C:/calext/sending_data.html

Google不喜欢本地文件吗?解决办法:

更新2:我尝试在我的网络主机上运行该文件。页面运行(抛出一些错误),但事件最终在我的日历上。所以这个错误位于不喜欢本地文件的地方。想法?

错误讯息:

  

您请求的页面不能   显示。另一个网站正在请求   访问您的Google帐户,但是   发送了格式错误的请求。请   联系您尝试的网站   收到此消息时使用   通知他们错误。一个   详细错误消息如下:

     

“下一个”参数不好或   丢失。

我的网页代码:

<html>

<head>
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
</head>

<body>

<img src="128.png">

<script type="text/javascript">
var myService;
var feedUrl = "https://www.google.com/calendar/feeds/default/private/full";

google.load("gdata", "1");
google.setOnLoadCallback(getMyFeed); // starts process

// Create a single event example
function doExample()
{
    var calendarService = myService;

    // The default "private/full" feed is used to insert event to the 
    // primary calendar of the authenticated user
    var feedUri = 'http://www.google.com/calendar/feeds/default/private/full';

    // Create an instance of CalendarEventEntry representing the new event
    var entry = new google.gdata.calendar.CalendarEventEntry();

    // Set the title of the event
    entry.setTitle(google.gdata.Text.create('JS-Client: insert event'));

    // Create a When object that will be attached to the event
    var when = new google.gdata.When();

    // Set the start and end time of the When object
    var startTime = google.gdata.DateTime.fromIso8601("2010-10-24T09:00:00.000-05:00");
    var endTime = google.gdata.DateTime.fromIso8601("2010-10-24T10:00:00.000-05:00");
    when.setStartTime(startTime);
    when.setEndTime(endTime);

    // Add the When object to the event 
    entry.addTime(when);

    // Submit the request using the calendar service object
    calendarService.insertEntry(feedUri, entry, handleMyFeed, handleError, google.gdata.calendar.CalendarEventEntry);
}

function handleMyFeed(myResultsFeedRoot)
{
    alert("This feed's title is: " + myResultsFeedRoot.feed.getTitle().getText());
}

function handleError(e)
{
    alert("There was an error!");
    alert(e.cause ? e.cause.statusText : e.message);
}

function getMyFeed()
{
    // Set up my service
    myService = new google.gdata.calendar.CalendarService('GoogleInc-jsguide-1.0');

    // Log me in
    var scope = "https://www.google.com/calendar/feeds/";
    var token = google.accounts.user.login(scope);

    // Create a single event example
    doExample();

    // Get my feed
    myService.getEventsFeed(feedUrl, handleMyFeed, handleError);
}

</script>

</body>
</html>

1 个答案:

答案 0 :(得分:0)

我假设你打开一个需要本地文件的本地文件。默认情况下,file:// URIs无法读取其他file:// URI。尝试添加此命令行参数,它专门用于帮助开发人员测试:

chrome --allow-file-access-from-files