【问题标题】:Why am I getting "The authenticated user has not installed the app with client id" error when using the Google Drive API natively?为什么我在本地使用 Google Drive API 时收到“经过身份验证的用户没有安装带有客户端 ID 的应用程序”错误?
【发布时间】:2012-04-27 06:36:42
【问题描述】:

我正在为 Emacs 开发 Google Drive 界面。这个概念是 Emacs 可以提供一种与平台无关的方式来加载、修改和保存存储在 Google Drive 中的文本文档。我已经注册了我的应用,并且可以使用 OAuth2 进行身份验证并使用 Docs List API 获取文件列表,但是当我尝试使用 Google Drive API 执行插入时,我看到了一个错误:

“经过身份验证的用户尚未安装客户端 id 的应用程序...”

进一步阅读,我似乎需要在 Chrome Web Store 中发布我的 Emacs 应用程序才能访问 Drive API。这对我来说没有意义......我注意到有一个正在为 Google Drive 开发的 FUSE 项目,这表明本地开发是可能的。然而,当我浏览代码时,我没有看到 Chrome Web Store 组件可以让它工作。

我是在试图滥用 API,还是有办法让这项工作更有意义?

【问题讨论】:

    标签: emacs elisp google-drive-api


    【解决方案1】:

    编辑:

    根据 Google Drive 团队的 Ali Afshar 的说法,使用此 API 不再需要安装。因此,以下内容可能不再相关,但将留作历史用途。


    所以,首先,从我们都在做的意义上说,API 不支持应用程序开发,但我不会使用原生这个词。好消息是我一直在做一些研究,而 Google Drive 实际上只是 Google Docs 的品牌重塑。因此,对于同样的目的,Google Docs API 也是一个不错的选择。

    无论如何,这是解决错误的步骤:“经过身份验证的用户尚未安装具有客户端 ID 的应用程序......”这是一个 403 错误,为了这个答案。 这些步骤假设您已根据需要在 chrome 网上商店中设置并安装了一个应用程序。 我也在本地机器上工作,我的项目:http://github.com/tom-dignan/gdrive-cli 我已经过去了这个错误,所以我认为你应该继续使用你的 emacs 版本,因为我认为我们可以做到这一点。

    一个。打开Google APIs console。

    b.确认您已经在“API 访问”下启用了 API,应该启用 API 和 SDK for Google drive。在那里,您可以获得您的客户端机密/api 密钥等。我几乎肯定你已经这样做了,所以继续 C。(这是为可能错过它的其他人准备的)

    c。在左侧导航栏中的“Drive SDK”下,您需要执行以下操作:

    1. 添加“支持 URL”(必需)

    2. 至少添加一个 16x16 的小应用程序图标(必需)

    3. 在 Drive Integration 下添加“OAuth Client ID(必需)”(我只是在修修补补,这似乎是关键字段。)

    4. 添加“打开 URL(必需)URL,以便从 google drive UI 为您的应用打开。”

    5. 勾选“多文件支持”

    6. 添加一些 MIME 类型和文件扩展名,例如“text/plain”和 txt

    7. 添加授权范围:

      https://www.googleapis.com/auth/userinfo.email

      https://www.googleapis.com/auth/userinfo.profile

    不要费心尝试在此处添加 Google 文档的身份验证范围,因为它不起作用。 Google 不希望我们以这种方式使用它,因为驱动应用程序创建的文件应该是该应用程序私有的。与 Google Docs 的集成必须分开。

    现在我知道您一定在想“为什么我必须添加其中一些……”这是因为表单将它们设为必填字段。在我的网站中,我放置了几个指向静态 HTML 页面的 URL。

    完成上述操作后,清理您的状态并重新安装您的 chrome 应用。然后再次尝试您的代码,它应该停止给您 403。

    【讨论】:

    • 非常感谢您的回答。今晚我将尝试这些东西,看看它是否能让我进入你所说的令人垂涎的“404”。 =) 然而,一个问题。我的理解是否正确,如果我分发我的应用程序(可能通过 GitHub),任何想要使用它的人都会:(1)需要安装 Chrome 或 Chromium 并且(2)访问 Chrome 网上应用店并安装其他毫无意义的网络应用程序这样他们就可以使用我正在编写的 Emacs 模式了?
    • 是的,听起来差不多。对于正在开发自己的 chrome 商店应用程序的开发人员来说,它应该是最有用的。然后他们可以使用我们的东西和他们的凭据来获取和放置文件以进行调试等。
    • 好的...我不喜欢这个答案,但感谢您花时间解释它。我会继续努力的......
    • 谢谢!这句话解决了我的问题“在驱动器集成下添加“OAuth 客户端 ID(必需)”(我只是在修补,这似乎是关键字段。)“,--我使用的是完整的客户端 ID 表单“123456.apps。 googleusercontent.com”,当我用“123456”替换它时,它起作用了:) ..
    • 附注使用此 API 不再需要安装。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-25
    相关资源
    最近更新 更多