繁体   English   中英

如何获得Drive API的令牌?

[英]How can I get a token for the Drive API?

我想使用NodeJS在我的Web应用程序中实现Google Drive API,当我尝试通过OAuth获取令牌时,我很挣扎。

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

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

谷歌搜索发现,我可以将该变量设置为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输入该URL,然后返回拒绝连接错误。 不知道在这里做什么,我搜索了我的问题,但找不到答案。 通过查看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”是一个魔术字符串,它表示您将不会在浏览器的auth阶段进行任何重定向,而是取回代码在您将进入应用程序的页面上。

我怀疑您正在谈论的“连接被拒绝”错误是您使用“ http:// localhost:8080 / ”作为该值,因此它试图将您的浏览器重定向到在localhost上运行的应用程序。我怀疑您那里没有任何东西。

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

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

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证书添加到您的服务器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM