Google drive api 在Google和Google Drive上同时使用操作?

Google drive api 在Google和Google Drive上同时使用操作?,google-drive-api,google-oauth,actions-on-google,Google Drive Api,Google Oauth,Actions On Google,我是一个业余的学生开发者,在Google上玩Actions,在Google Home上创建一个简单的“文本冒险”游戏。由于Google Home将与玩家对话,而不是与阅读文本的玩家对话,我希望这将创造一种类似于“龙与地下城”角色扮演游戏的体验,让计算机充当“地下城大师”。借助API.AI提供的自然语言帮助和Google上的Actions,这似乎是一种很好的搭配,因为玩家可以“自然地”回应 然而,每次我启动游戏,它总是一个新的游戏。我想将用户先前状态的savegame存储在用户的Google Dr

我是一个业余的学生开发者,在Google上玩Actions,在Google Home上创建一个简单的“文本冒险”游戏。由于Google Home将与玩家对话,而不是与阅读文本的玩家对话,我希望这将创造一种类似于“龙与地下城”角色扮演游戏的体验,让计算机充当“地下城大师”。借助API.AI提供的自然语言帮助和Google上的Actions,这似乎是一种很好的搭配,因为玩家可以“自然地”回应

然而,每次我启动游戏,它总是一个新的游戏。我想将用户先前状态的savegame存储在用户的Google Drive上托管的JSON文件中——因为我只是一名学生,这样做只是为了好玩,我实际上没有一个官方网站或任何东西,除了运行应用程序的免费Heroku服务器之外,在我这端存储存储几乎是不可能的

我已经通过了,我已经得到了工作在控制台刚刚好。唯一的问题是在快速启动中,用户必须单击一个链接才能授权应用程序读取他们的Google Drive帐户中的内容,我不确定如何才能“单击链接”并通过Google Home上的语音返回访问令牌


有没有办法通过谷歌硬盘做到这一点?还是有更好的方法在会话之间提供持久数据?我通常不从事web开发工作,因此希望您能提供任何帮助。

坏消息是,您将无法摆脱用户使用其web浏览器授权您的应用程序访问其驱动器的需要


好消息是你只需要做一次。当你的应用程序请求授权时,它应该指定“离线”,这将导致你得到一个刷新令牌。您应该将其保存在用户数据库中的某个位置。每当您需要访问用户的驱动器时,您都可以使用保存的刷新令牌请求访问令牌,这样您就可以开始了。

您有一些问题需要在这里解决,虽然它们看起来是相关的,但它们并不像您希望的那样相关:

  • 您需要获得授权才能访问用户的驱动器空间
  • 您需要验证用户的家(以便您知道此人已回来)
  • 您必须将这两种关系连接起来,以便了解与您通话的家用设备的驱动器空间
  • 您已经找到了(1)的答案,如前所述,您需要为他们使用浏览器来授权您访问他们的驱动器。然后,您将存储刷新令牌,并能够在将来访问它

    但这只是问题的一部分。Home不允许您直接访问用户的Google帐户,因此您必须管理自己的帐户机制并将其绑定到Home。这里有几个解决方案:

    • Home在发送到webhook的JSON中提供。如果您使用的是Actions API库,则可以使用
      getUser().user\u id
      访问此文件,或者在JSON中的
      data.user.user\u id
      字段中访问此文件。虽然这类似于浏览器cookie,但它只存储用户ID,不能存储其他数据。也没有“本地存储”的概念。从好的方面来说,这个ID在不同的设备上是一致的
    • 您可以请求他们的姓名和地址。但它没有任何独特的或帐户信息,所以这可能对您没有用处
    • 您可以实现OAuth2服务器并执行以下操作。请注意,这与您需要使用Google Drive做的事情是不同的——您将提供访问和刷新令牌,以验证和授权对您帐户的访问,Google Home设备将把这些令牌发送回您,以便您可以确定用户是谁。您实际上不需要存储帐户信息——您可以使用JSON Web令牌(JWT)或其他方法提供令牌信息,并让它们以安全的方式存储帐户信息。用户将使用Google Home应用程序作为一次性事件实际登录您的服务
    为了处理(3),您可能认为(1)允许您获得令牌,而(2)的OAuth解决方案要求您分发令牌。这两者能结合起来吗?好。。。可能吧,但这并不那么简单。您不能只将Google OAuth2端点交给Home—它们会显式地阻止这一点,您需要控制您的OAuth2端点。但是,您可能能够构建代理端点,但我还没有探讨这样做的安全含义


    我认为你的思路是正确的——使用硬盘是存储用户信息的好地方。使用Home的帐户链接为您提供了一个位置,他们必须访问您的网站来验证和授权他们的家,您可以使用该位置对他们的驱动器执行相同的操作。

    啊,我明白了。所以没有办法绕过我自己的用户帐户系统来存储这些东西。看来我还有更多的学习要做!同时,我将把这个标记为可接受的答案。谢谢