在ASP.Net应用程序中显示IFRAME中的Google Doc

时间:2013-06-25 06:56:56

标签: iframe google-docs google-docs-api google-oauth

我正在开发一个.net应用程序,允许用户将google doc链接附加到应用程序,并从应用程序本身查看/编辑它们。我使用iframe将谷歌文档嵌入到我的应用程序中。

由于谷歌文档嵌入应用程序应该脱机,我使用谷歌API的访问令牌来获取URL和显示。我在这方面有显示问题。

根据Google API文档,我已经完成了与获取打开google doc“离线”所需的访问令牌相关的所有操作。根据google api开发人员文档,在打开google doc url时,我需要将访问令牌作为查询参数或作为请求标头(“授权”标头)传递。

我尝试使用Authorization标头并使用HttpWebRequest对象打开google doc url,但我没有正确打开doc页面。

aspx文件中的代码

htmlBuilder.AppendFormat("<iframe src='ShowFiles.ashx?url={0}' id='myFrame' name='myFrame' width='100%' height='100%' marginheight='0' frameborder='0'></iframe>", urlLink);

Generic Handler(ShowFiles.ashx)文件中的代码

// get the UrlLink from the Query Parameter (url) 
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(urlLink);
myHttpWebRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like 
                               Gecko) Chrome/27.0.1453.116    Safari/537.36"; 
myHttpWebRequest.Headers.Add("Authorization", "Bearer " + accessToken); 
string pageContent = string.Empty; 
HttpWebResponse HttpWResp = (HttpWebResponse)myHttpWebRequest.GetResponse();
if (HttpWResp != null)
{
    StreamReader sr = new StreamReader(HttpWResp.GetResponseStream());
    pageContent = sr.ReadToEnd();
}
context.Response.ContentType = HttpWResp.ContentType;
context.Response.Write(pageContent);

浏览器确实打开了谷歌文档,但一旦打开它就会一直说“尝试连接到谷歌”,它会不断弹出提示“服务器没有响应”

所以我尝试使用访问令牌作为URL LINK的查询参数,但这似乎根本不起作用。 例如: urlLink =“http://google.docs.com/myDoc/myFile?access_token=fsdfsfsq4334234_df

并将此网址设置为iframe src

<iframe src=urlLink>

这根本不起作用......

我知道如果在同一个浏览器中我登录到我的谷歌帐户,我有这个谷歌驱动器文档(在另一个选项卡中),然后在没有此访问令牌的我的Web应用程序中,我的iframe完美地加载了谷歌文档,只是通过提供文档网址

http://google.docs.com/myDoc/myFile“&GT;

我尝试使用jQuery ajax从客户端打开url,然后google doc打开,但变为只读。

var jqXHR = $.ajax({
            async: true,
            url: url,
            type: 'GET',
            xhr: function () {
                var xhr = new window.XMLHttpRequest();
                return xhr;
            },
            beforeSend: function (xhr) {
                if (xhr != null)
                    xhr.setRequestHeader("Authorization", "Bearer " + token);
            }
        });

        jqXHR.done(function (data, textStatus, xhr) {
            $("#myFrame").contents().find("html").html(xhr.responseText);
        });

任何人都可以帮助我在我的网络应用程序中的IFRAME中正确显示这些谷歌文档(在编辑模式下)

1 个答案:

答案 0 :(得分:0)

我认为Google文档使用HTTPS,这意味着您无法在自己的网站上嵌入HTTPS网站。我之前尝试使用HTTPS或ssl证书嵌入iframe网站,所以我跳到了这个结论。