相关疑难解决方法(0)

具有有效 access_token 的 Google Picker API 要求在首次使用时登录

首先,我查看了与类似问题和 Google Picker API 文档相关的多个 SO 问题,但找不到解决方案。链接在这篇文章的底部。

\n

目标

\n

使用 Google auth2 JavaScript 库完成用户获取access_code 的ux_mode=\'popup\'登录过程后,我希望使用选择器JavaScript 库和获得的access_code打开 Google Picker 窗口。

\n

预期的

\n

检查access_code仍然有效后,当google.picker.PickerBuilder()对象通过picker.setVisible(true)设置为可见时,用户始终能够根据选择器对象的配置集选择文件。

\n

实际的

\n

在新的浏览器上,遇到此流程会导致 Google Picker 窗口要求用户再次登录。如果用户选择这样做,则会触发一个额外的弹出窗口,自动再次执行登录流程,然后通知用户“API 开发人员密钥无效”。

\n

真正令人意想不到的是,如果用户刷新页面并重复完全相同的操作,Google Picker 就会完全按预期工作。复制异常行为的唯一方法是清除所有浏览器缓存、Cookie 和任何其他网站相关设置。\n选择器要求用户再次登录其 Google 帐户

\n

JavaScript 控制台上常见的错误有:

\n
\n

无法在 \xe2\x80\x98DOMWindow\xe2\x80\x99 上执行 \xe2\x80\x98postMessage\xe2\x80\x99:提供的目标源 (\xe2\x80\x98https://docs.google.com\xe2 \x80\x99) 与收件人窗口\xe2\x80\x99s 源 (\xe2\x80\x98http://localhost\xe2\x80\x99) 不匹配。

\n
\n
\n

加载 \xe2\x80\x9c 时发现无效的 X-Frame-Options 标头 https://docs.google.com/picker?protocol=gadgets&origin=http%3A%2F%2Flocalhost&navHidden=true&multiselectEnabled=true&oauth_token=...... ......: \xe2\x80\x9cALLOW-FROM http://localhost\xe2\x80\x9d 不是有效的指令。

\n …

javascript google-picker

6
推荐指数
0
解决办法
1308
查看次数

让 Google 文件选择器使用 drive.file 范围

我正在尝试使用 Google 文件选择器来选择一个文档,然后更新其权限。我不需要访问所有云端硬盘文件,只需访问选定的文件即可。

但是,在使用https://www.googleapis.com/auth/drive.file范围时,当我尝试更改文档的权限时出现 404 错误。如果我使用https://www.googleapis.com/auth/drive范围,我不会收到此错误,但这为我提供了比我需要的更多访问权限。

有没有办法让文件选择器使用更有限的https://www.googleapis.com/auth/drive.file范围?

这是我的文件选择器代码:

 <!-- The standard Google Loader script. -->
    <script src="http://www.google.com/jsapi"></script>
    <script type="text/javascript">


    // Use the Google Loader script to load the google.picker script.
    //google.setOnLoadCallback(createPicker);
    google.load('picker', '1');

    // Create and render a Picker object 
    function createPicker() {
         var view = new google.picker.DocsView(google.picker.ViewId.DOCS);
         view.setMode(google.picker.DocsViewMode.LIST);
          //view.setMimeTypes("image/png,image/jpeg,image/jpg");    
          var picker = new google.picker.PickerBuilder()
          //.enableFeature(google.picker.Feature.NAV_HIDDEN)
          //.enableFeature(google.picker.Feature.MULTISELECT_ENABLED)
          .setAppId("<%= ENV['GOOGLE_ID']%>")
          .setOAuthToken("<%= current_user.token %>") //Optional: The auth token used in the current Drive API session.
          .addView(view) …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails google-drive-api

5
推荐指数
1
解决办法
1967
查看次数

无法使用 Google Drive API v3 从其他帐户检索文件

我有一个使用 GoogleFilePicker 获得的图像文件。使用 GoogleFilePicker 中的 FileId,我尝试使用以下 URL 检索文件:https://www.googleapis.com/drive/v3/files/${FileId}?alt=media&supportsAllDrives=true

accessToken 的范围是“https://www.googleapis.com/auth/drive.file”。当我尝试使用主帐户(文件存在于其中)检索文件时,一切正常。但是,如果我想从另一个帐户(文件与该帐户共享)检索文件,我会遇到问题 404。

{
    "error": {
        "code": 404,
        "message": "File not found: 1OQSUO7ObmEavKMXXkxNuG12vffqVi-Gk.",
        "errors": [{
            "message": "File not found: 1OQSUO7ObmEavKMXXkxNuG12vffqVi-Gk.",
            "domain": "global",
            "reason": "notFound",
            "location": "fileId",
            "locationType": "parameter"
        }]
    }
}
Run Code Online (Sandbox Code Playgroud)

是否可以获取没有范围“https://www.googleapis.com/auth/drive”而仅使用“https://www.googleapis.com/auth/drive.file”的文件?

javascript google-api google-drive-api

5
推荐指数
1
解决办法
1556
查看次数