【发布时间】:2017-03-27 17:48:05
【问题描述】:
我想在我的 alexa 技能中创建一个 google 文档表,它是用 Node.js 编写的。我启用了谷歌 API,我在亚马逊开发门户中设置了所需的范围,我实际上可以登录谷歌帐户(所以发布的代码的前几行似乎工作),我没有收到任何错误消息。但是永远不会创建工作表。
现在的主要问题是是否有人能在我的代码中看到问题。
但我还有一个我非常感兴趣的问题:由于我使用帐户链接,我无法在 Alexa 测试模拟器中尝试该代码,但必须在运行之前将其上传到 Alexa,我可以没有得到任何调试消息。如何以这种方式进行最佳调试?
if (this.event!== undefined)
{
if (this.event.session.user.accessToken === undefined)
{
this.emit(':tellWithLinkAccountCard','to start using this skill, please use the companion app to authenticate on Google');
return;
}
}
else
{
this.emit(':tellWithLinkAccountCard','to start using this skill, please use the companion app to authenticate on Google');
return;
}
var oauth2Client = new google.auth.OAuth2('***.apps.googleusercontent.com', '***', '***');
oauth2Client.setCredentials({
access_token: this.event.session.user.accessToken,
refresh_token: this.event.session.user.refreshToken
});
var services = google.sheets('v4');
services.spreadsheets.create({
resource : {properties:{title:"MySheet"}},
auth : oauth2Client
}, function(err,response) {
if( err ) {
console.log('Error : unable to create file, ' + err);
return;
} else {
console.dir(response);
}
});
编辑:我手动尝试了下半部分,并且可以创建电子表格。所以问题似乎确实是用 "this.event.session.user.accessToken" 检索访问令牌。
【问题讨论】:
-
this.event.session.user.accessToken 来自哪里?这闻起来有点像您在使用服务帐户?
-
这是由亚马逊alexa接口提供的账户链接。我认为我没有使用服务帐户。
-
您是否有 http 请求/响应来查看它是否返回 200 或某种错误?
-
不幸的是,我不知道如何获得这些,因为我必须通过 alexa 运行脚本,才能访问 amazon api 提供给我的访问令牌。
-
代码实际上似乎工作。我在代码下方的一个错误命令是实际问题。
标签: node.js google-oauth google-api-client google-sheets-api alexa-skills-kit