node.js - 使用 google drive api,在未签名的情况下打开google驱动器文件

  显示原文与译文双语对照的内容
0 0

这真的一直在扰扰我,所以有任何帮助确认或者确认这一点 ! 这也是我第一次发布的问题,尽管我正在开发一个很长的时间:

我有一个nodejs应用程序集成,我希望用户能够授权多个Google驱动帐户,并能够查看和打开( 一般情况下只与) 。

我使用最高可用范围授权我的应用程序: https://www.googleapis.com/auth/drive 因为我不希望用户在access_token运行时再次登录,所以我还包括 approval_prompt:"force" 和 ``access_type: "offline request当我请求访问令牌时。

我很好地授权,我可以删除文件,我可以打开它们,我可以共享它们,我可以下载它们。 不过,只有一件事:如果我授权 horse@gmail.com,然后再使用 beaver@gmail.com.,那么我仍然可以删除。共享。下载和预览两个账户。 但是我只是英镑不能打开的文档中的文档来编辑。 我能做的最好的事情就是向我展示文档,正确的帐户登录在屏幕的右上角。 当我点击按钮它就刷新,给我同样的信息和相同的屏幕。

我尝试过的是:

  1. 简单地将用户重定向到API中的文件资源 alternateLink
  2. 获取 alternateLink 并将 access_token 追加到它,然后将用户重定向到它。 ( 还有很多其他随机的东西我发现了不同的地方) 。

在这两种情况下,我也尝试从所有的。

现在我检查了一些像Jollicloud和Odrive这样的web部件,它们。 但是,它们都似乎迫使用户登录到谷歌以访问文件。

真正的true,你可以用用户的文件来完成各种类似的事情,但是你不能在 Google Docs 中打开它们。

我不完全确定应该添加什么样的代码来展示我所拥有的。 但这是我的公开行动( 在使用 Google graph打开文件( 因为我们正在使用OrientDB图形数据库) 时会发生什么,这只是为了获取存储令牌的账户。) 。 链接是文件( 请参见下面)的链接属性:


open: function(req,res,next){
 var link = req.param("link");
 var uid = req.param("uid");
 orientdb.select().from('Account').where({uid: uid}).one()
. then(function(account){
 var URL = link +"&access_token=" + account.tokens.access_token;
 res.redirect(URL);
 });
}

下面是一个来自我们数据库的文件文档( 我已经用一个描述性的描述替换了所有的妥协数据

ODocument - 类:文件 id: #13:20499 v.6


 name : Hummer2 
 service : Gdrive 
 kind : Google Doc 
 created : Nov 17, 2014 
 changed : Nov 17, 2014 
 users : [MB] 
 uid : mrb@flowtale.com 
 childID : <FILE.ID>
 exportLinks : {DOCX=https://docs.google.com/feeds/download/documents/export/Export?id=<FILE.ID>&exportFormat=docx, Open Office doc=https://docs.google.com/feeds/download/documents/export/Export?id=<FILE.ID>&exportFormat=odt, Rich text=https://docs.google.com/feeds/download/documents/export/Export?id=<FILE.ID>&exportFormat=rtf, HTML=https://docs.google.com/feeds/download/documents/export/Export?id=<FILE.ID>&exportFormat=html, Plain text=https://docs.google.com/feeds/download/documents/export/Export?id=<FILE.ID>&exportFormat=txt, PDF=https://docs.google.com/feeds/download/documents/export/Export?id=<FILE.ID>&exportFormat=pdf}
 usernames : [<ARRAY OF USERNAMES ASSOCIATED WITH THIS FILE>]
 in_hasFile : User#11:0{out_hasFile:[size=2237],out_hasAccount:[size=4],username:null,email:h@h.com,password:<SOME ENCRYPTED PASSWORD>} v2244
 out_belongsTo : Account#12:3{in_belongsTo:[size=6],type:Gdrive,uid:<SOME UID>,tokens:{access_token=<OUR ACCOUNT ACCESS TOKEN>, token_type=Bearer, refresh_token=<OUR ACCOUNT REFRESH TOKEN>, expiry_date=1416258913290},rootFolderID:<ROOT FOLDER ID>,email:<THE ACCOUNT EMAIL>,filesCached:2,usersCached:2,job:4,in_hasAccount:#11:0} v15

in_folderContains : File#13:20495{out_folderContains:[size=2],name:Testhest,service:Gdrive,kind:folder,created:Oct 12, 2014,changed:Oct 12, 2014,users:[1],link:https://docs.google.com/a/flowtale.com/folderview?id=<FOLDER.ID>&usp=drivesdk,uid:mrb@flowtale.com,childID:<FOLDER.ID>,exportLinks:{},usernames:[1],parents:[1],in_hasFile:#11:0,out_belongsTo:#12:3,in_folderContains:#13:13891} v36
 link : https://docs.google.com/a/flowtale.com/document/d/<FILE.ID>/edit?usp=drivesdk

期待有人能帮助我或者曾经遇到过这种情况。

谢谢!

时间: 原作者:

0 0

这个API允许你在你的驱动器帐户中执行几个操作。 我没有能够重复你提到的文件,我没有向它的他帐户授予权限。

当通过OAuth进程认证时,只向创建OAuth请求的应用程序授予对你的帐户的访问权限。 如果不通过GDocs手动打开文件,则无法编辑文件的内容。 因此,当浏览器打开AlternateUrl时,它需要你登录到该帐户,以便访问该文件。

...