OAuth 2.0 - asp.net MVC 应用程序需要从 "service" 访问用户 Google 云端硬盘帐户



我正在编写一个网络应用程序,使我们的客户可以将他们的个人Google云端硬盘上的文件同步到我们的丛林应用程序中。(仅限有限的文件类型)。

所以 - 到目前为止有效的:

    用户注册应用
  • (使用 OAuth2 并在我端保存刷新令牌)用户/和我的应用,现在可以访问其云端硬盘上的文件,并且可以手动调用文件传输。

工作正常。

  • 之后,用户可以再次登录并重复此操作,而无需再次对应用程序进行身份验证。好。

  • 同时,我需要某种"服务"来循环通过我们应用程序的用户群并自动同步指定文件夹中的文件 - 比如每 10 分钟一次。

现在由于OAuth2模型而遇到问题,需要重定向以对每个用户进行身份验证。但是我不能从单个请求中进行多次重定向,例如"/SyncAllUsers"。此外,当仅对一个用户进行测试时,该用户仍然必须登录到浏览器会话,否则Google将重定向到服务登录页面。

(我们使用 chron-job 以指定的时间间隔调用这些方法 - 它与 Dropbox 帐户配合良好,这些用户也使用 OAuth)


所以基本上有2个问题:

  • 如何使用已授权的应用访问用户的云端硬盘帐号,而无需用户"登录"
  • 以及我应该如何处理要运行的同步服务,而不必重定向到每个用户。

我花了几天时间在 https://developers.google.com/drive/和这里寻找答案。我有 impl。此处的OAuth代码 https://developers.google.com/drive/credentials#retrieve_oauth_20_credentials我修改了它,所以它使用我自己的用户数据库。

有关您的信息,请使用 Web 应用程序的客户端 ID,请在 Google API 控制台中

获得刷新令牌后,可以使用它执行同步,而无需用户干预。这是offline访问的本质,也是刷新令牌的全部用途。

(对不起,如果这不能回答你的问题,我不完全确定你在问什么,所以请解释更多,我会尽量给你一个不同/更好的答案。

最新更新