我们有一个内联网,内置.Net(C#)。我们希望我们的CMS能够从Google文档中提取HTML内容以与其他内容集成。
具体来说,我们希望编辑能够创建和维护Google Doc,并将此doc(通过其ID)的引用嵌入到Intranet上的页面中。在呈现页面时,CMS将联系Google Docs,获取文档的HTML内容,并将其作为页面的一部分呈现(是的,将涉及缓存)。
我已经绕过GData API了。这比我想象的要难。
身份验证是通过OAuth进行的,因此我们要为CMS创建另一个Google Apps用户,以便我可以通过身份验证。
但是一旦我检索到文档,就没有HTML。有各种各样的属性(包括一个非常被称为“内容”的属性,但是没有),但我看不到文档的实际HTML内容。它似乎有关于文档的各种信息,除了内容本身。
谷歌搜索和研究的时间告诉我,我可能必须形成导出URL,然后通过HTTP将其下载为HTML文件。我可以在浏览器中执行此操作 - 只需粘贴正确的URL即可。
但我无法从代码中做到这一点。当然,我可以发出一个HTTP请求,但它没有进行我已经通过的身份验证来获取文档对象本身。
所以,有两个问题:
答案 0 :(得分:1)
有几个指示......
您询问用户互动情况。为此...
好消息是你可以做你想要的。具体细节在很大程度上取决于谁拥有文件。 请记住,Oauth是关于授权(将身份验证作为一种副产品)。
因此,您拥有“用户”所拥有的Google文档文档“Doc”。应用程序“App”想要阅读Doc。因此,第一步是用户授权App访问Doc。这就是以用户为中心的东西。如果App请求“离线”访问,则Oauth将为其提供刷新令牌,该App将存储并可随时用于生成访问令牌并读取Doc。从刷新令牌生成访问令牌可以在没有任何用户交互的情况下完成,它只是对Google URL的POST。
因此,在这种情况下,用户交互只发生一次。
您可以采取的另一种方法是让App拥有Doc,并与User共享。在这种情况下,App(可能)将成为服务帐户(https://developers.google.com/accounts/docs/OAuth2ServiceAccount)。由于App创建并拥有Doc,因此用户无需授权。