使用 httr 为 Trello 创建 oauth 令牌时如何修复 "invalid return_url" 错误?

How to fix "invalid return_url" error when creating oauth token for Trello with httr?

我想使用 trelloR 包管理我的 Trello 卡片和看板,但是当我尝试使用 get_token 函数创建令牌时,我在浏览器上收到一条错误消息:"Invalid return_url"。

my_token <- get_token(key = my_key, secret = my_secret)

my_key 是我个人的 Trello API 密钥,my_secret 是我的 OAuth 密钥。登录后,我在 Trello 页面上找到了它们,该页面为您提供了身份验证代码:https://trello.com/app-key

要使用 Trello API 和访问看板,我需要一个令牌。此令牌由 httr 包使用 OAuth1.0 生成。事实上,根据 trelloR here 的作者和维护者 Jakub Chromec 的说法,函数 get_token 做这样的事情:

trello.app = httr::oauth_app(
  appname = "trello-app",
  key = my_key,
  secret = my_secret)

trello.urls = httr::oauth_endpoint(
  request = "OAuthGetRequestToken",
  authorize ="OAuthAuthorizeToken?scope=read&expiration=30days&name=trello-app",
  access = "OAuthGetAccessToken",
  base_url = "https://trello.com/1")

httr::oauth1.0_token(
  endpoint = trello.urls,
  app = trello.app)

当我使用我的个人密钥和密码执行此代码或函数 get_token 时,我被重定向到我的浏览器,这是正常的。如 this page 所述,应出现一个屏幕,要求我允许身份验证。但是我只是在浏览器中收到一条错误消息:"Invalid return_url".

在 RStudio 控制台中,这仍然显示:

> my_token <- get_token(my_key, my_secret)
Waiting for authentication in browser...
Press Esc/Ctrl + C to abort

我在 macOS 10.15 下使用 httr 1.4.1、curl 4.2 和 trelloR 0.6.0 以及 R 3.6.1。

一些人报告说这个问题是在引入 Allowed Origins 之后开始的,他们可以通过添加以下来源来解决这个问题:

http://localhost:1410

appkey 页面上。这让我有点惊讶,因为默认 * 应该涵盖所有来源,但你去吧。

今天(11/23/2019)尝试这个,我无法让通配符作为允许的来源。您应该指定您所在的域运行调用授权。

混淆的一个来源:https://trello.com/app-key "Allowed Origins" 下的评论指的是 "your application is allowed to redirect back to following the authorization flow." 让我有点困惑的网站。该列表应包括您要重定向回的网站以及您从中调用 Trello.authorize() 的网站。

如果你想"I don't need a redirect"(而且,事实上,如果你使用client.js,我认为你不能指定重定向),那么[=21=下的那些评论] 可能会让您相信您不需要在那里指定任何内容。那是不正确的。

总结:即使你不想post-授权重定向,你仍然必须列出一个来源。

此外,您不能在 Allowed Origins 中指定 file://,因此您不能 运行 您的 javascript 本地文件。