如何获取云端硬盘 API 的令牌



我想使用NodeJS将Google Drive API实现到我的Web应用程序中,当我尝试通过OAuth获取令牌时,我遇到了困难。

我已经从本指南中复制了代码并使用 Node 运行脚本,它在此行中返回一个错误:

var redirectUrl = credentials.installed.redirect_uris[0];

谷歌搜索我发现我可以将该变量设置为 http://localhost:8080 并在 Google 开发人员控制台的授权重定向 URI 配置中设置相同的值,并且该错误消失了,很好,它有效。现在它要求我使用URL获取的代码。

https://accounts.google.com/o/oauth2/auth?access_type=offline&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.metadata.readonly&response_type=code&client_id=CLIENT_ID&redirect_uri=http%3A%2F%2Flocalhost%3A8080

然后,我添加了客户端 ID 并使用 Chrome 输入该网址,然后返回连接被拒绝错误。不知道在这里该怎么办,我搜索了我的问题,但找不到答案。通过查看Chrome中的方向栏,我看到有一个名为code的参数,在它之后,有随机数字和字母。喜欢这个:

http://localhost:8080/?code=#/r6ntY87F8DAfhsdfadf78F7D765lJu_Vk-5qhc#

如果我添加这些值中的任何一个,它会返回此错误...

Error while trying to retrieve access token { [Error: invalid_request] code: 400 }

关于我应该做什么的任何想法?谢谢。

您是否按照指示页面上的所有说明进行操作,包括步骤 1 中的所有说明,即在控制台中创建凭证并为其下载 JSON?关于创建这些凭证以及从中获取的 JSON,有几点需要注意:

  • 他们给出的步骤与我所经历的步骤略有不同。它们基本上是正确的,但是"转到凭据"并没有将我放在顶部具有"OAuth 同意屏幕"和"凭据"选项卡的页面上。我必须首先单击该项目的"凭据"左侧导航。

  • 同样,在"凭据"
  • 页面上,我的按钮标记为"创建凭据",而不是"添加凭据"。但无论哪种方式,它都是页面顶部的蓝色按钮。

  • 选择"OAuth 客户端 ID",然后选择"其他"的应用程序类型,这一点非常重要。这将允许您创建通过应用程序而不是服务器运行的 OAuth 令牌。

  • 看看它告诉您下载的client_secret.json文件。在那里,您应该看到一个类似于

    "redirect_uris":["urn:ietf:wg:oauth:2.0:oob","http://localhost"]
    的条目,这是您报告有问题的行正在寻找的 JSON 条目。

"urn:ietf:wg:oauth:2.0:oob"是一个魔术字符串,表示您不会重定向到浏览器中身份验证阶段的任何地方,而是要在页面上返回将输入到应用程序中的代码。

我怀疑您所说的"连接被拒绝"错误是您对该值使用了"http://localhost:8080/",因此它试图将您的浏览器重定向到在本地主机上运行的应用程序......我怀疑你在那里没有任何东西运行。

应用程序将提示您输入代码,将代码转换为所需的令牌,然后保存令牌以供将来使用。请参阅示例代码中的 getNewToken() 函数,了解它在何处以及如何执行所有这些操作。

您需要使用此代码来交换令牌。我不确定nodejs如何做到这一点,但在PHP中,我会将详细信息发布到令牌交换网址。在javascript中,你的post数组看起来类似于这个....

var query = {'code': 'the code sent',
             'client_id': 'your client id',
             'client_secret': 'your client secret',
             'redirect_uri': 'your redirect',
             'grant_type': 'code' };

希望这有帮助

将重定向 uri 从 http://localhost:8080 更改为 https://localhost:8080。为此,请将 SSL 证书添加到您的服务器。

相关内容

  • 没有找到相关文章

最新更新