我是一名业余爱好者学生开发者,他正在玩Google上的炬力,在Google Home上创建一个简单的“文字冒险”游戏。由于谷歌主页将与玩家而不是阅读文本的玩家交谈,我希望这将创建类似于“龙与地下城”角色扮演游戏的体验,计算机将作为“地牢大师”。通过API.AI和Google提供的自然语言协助,它看起来非常合适,因为玩家可以“自然地”做出回应。 Here's an example of an Amazon Alexa skill that does essentially what I'm going for.
但是,每次启动游戏时,它总是一款新游戏。我想在用户的Google云端硬盘上托管一个JSON文件中存储一个用户以前状态的存档游戏 - 因为我只是一个学生为了好玩这样做,我实际上没有官方网站或任何其他东西免费的Heroku服务器我正在运行该应用程序,使存储保存在我的终端几乎是不可能的。
我已经走过了Google Drive REST quickstart for Node.js,我已经在控制台上工作了。唯一的问题是快速启动,用户必须点击链接授权应用程序读取他们的Google云端硬盘帐户中的内容,我不确定我如何能够“点击链接”并回馈通过Google Home上的语音访问令牌。
有没有办法通过Google云端硬盘实现这一目标?或者是否有更好的方法在会话之间提供持久数据?我通常不会在网站开发方面工作,所以任何帮助都会受到赞赏。
答案 0 :(得分:2)
坏消息是,您无法让用户使用其网络浏览器授权您的应用访问其云端硬盘。
好消息是你只需要这样做一次。当您的应用程序请求authoirsation时,它应指定" offline",这将导致您获得刷新令牌。您应该将其保存在用户数据库中的某个位置。每当您需要访问用户的云端硬盘时,您都可以使用已保存的刷新令牌来请求访问令牌,并且您可以继续使用。
答案 1 :(得分:1)
你有一些问题需要在这里解决,虽然它们看似相关,但它们并不像你希望的那样相关:
您已找到(1)的答案,如上所述,您需要使用浏览器授权您访问其云端硬盘。然后,您将存储刷新令牌,并且将来可以访问它。
但这只是问题的一部分。主页不允许您直接访问用户的Google帐户,因此您必须管理自己的帐户机制并将其绑定到主页。这里有一些解决方案:
getUser().user_id
访问此文件,或者在JSON的data.user.user_id
字段中访问此文件。虽然这与浏览器cookie类似,但它只存储用户ID,无法存储其他数据。也没有“本地存储”的概念。从好的方面来说,这个ID在不同的设备上是一致的。为了处理(3),您可能会认为(1)允许您获取令牌,而(2)的OAuth解决方案要求您分发令牌。两者可以合并吗?嗯...可能,但它并不那么简单。您不能只将Google OAuth2端点提供给主页 - 它们会明确阻止该端点,您需要控制OAuth2端点。但是,您可以构建代理端点 - 但我没有探讨这样做的安全隐患。
我认为你走在正确的轨道上 - 使用Drive是存储用户信息的好地方。使用Home的帐户链接为您提供了一个他们必须来到您的网站进行身份验证和授权的地方,您可以使用它来为他们的云端硬盘做同样的事情。