如何获取Drive API的令牌?

时间:2016-03-07 20:00:31

标签: node.js rest google-api google-drive-api google-oauth

我想使用NodeJS将Google Drive API实施到我的网络应用程序,当我尝试通过OAuth获取令牌时,我感到很挣扎。

我已经从this guide复制了代码并使用Node运行脚本,并在此行中返回错误:

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

Google搜索我发现我可以将该变量设置为http://localhost:8080,并在Google Developers Console中的授权重定向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 }

关于我该怎么做的任何想法?感谢。

3 个答案:

答案 0 :(得分:1)

您是否按照所示页面上的所有说明操作,包括步骤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”是一个神奇的字符串,表示你不会在浏览器中作为auth阶段的一部分重定向,而是你会得到返回您将在应用程序中输入的页面上的代码。

我怀疑您所说的“连接被拒绝”错误是您使用“http://localhost:8080/”表示该值,因此它尝试将浏览器重定向到在localhost上运行的应用程序...我怀疑你没有在那里跑步。

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

答案 1 :(得分:0)

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

grid

希望这有帮助

答案 2 :(得分:0)

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