第三方应用程序可能试图未经授权访问您的账户 - Ameritrade

A third party application may be attempting to make unauthorized access to your account - Ameritrade

我正在尝试为 ameritrade 的开发者平台做一些简单的授权。我在尝试。

根据平台,我需要访问的Endpoint是: https://auth.tdameritrade.com/auth?response_type=code&redirect_uri={uri}&client_id={client_id}}%40AMER.OAUTHAP

https://developer.tdameritrade.com/content/simple-auth-local-apps

在查看开发应用程序的 client_id 时,我注意到它们实际上可能在引用应用程序,而不是消费者密钥?所以我就这样做了,但是当试图查询信息时,它 returns: 第三方应用程序可能试图对您的帐户进行未经授权的访问。 原因我认为这是消费者密钥,列在:https://developer.tdameritrade.com/content/getting-started

所以我最终做了类似的事情:

from urllib.parse import urlencode, quote_plus
url = "https://auth.tdameritrade.com/auth?response_type=code&redirect_uri={uri}&client_id={client_id}}%40AMER.OAUTHAP".format(
  uri=urlencode("http://localhost", quote_via=quote_plus), 
  client_id="JHBDFGJH45OOUDFHGJKSDBNG"  #Sample
  )

我不认为这是因为我目前在不同的国家,我认为这里有其他问题。

它并没有跟进,而是 returns 该信息出现 400 错误。不过我不确定出了什么问题。

当您错误地复制回调 URI 时会发生这种情况。想象一下,如果这是一个客户端应用程序,TD 检测到该应用程序正试图将用户发送到与应用程序配置不同的 URL。如果他们向该应用程序发送回调请求,它将收到令牌并获得对您帐户的完全控制权。

您是否仔细检查过是否正确复制了回调 URL、协议名称、端口和尾部斜杠以及所有内容?另外,考虑使用 API library instead of writing your own. You can find documentation about this specific error here

以防万一有人仍然遇到此问题,请确保回调 URI 的拼写与您在创建应用程序时指定的拼写完全相同。我遇到这个问题是因为我在 TD 开发者网站上将回调设置为 "https://localhost/",并在 URL 中使用了 "https://localhost"(末尾缺少斜线)。我在末尾添加斜杠后,它就起作用了。

我遇到了这个问题,我通过简单地在应用程序的回调 URI 上使用 http://127.0.0.1 解决了它。

然后我在下面使用 URL,它按预期工作。

https://auth.tdameritrade.com/auth?response_type=code&redirect_uri=http%3A%2F%2F127.0.0.1&client_id={MyConsumerKey}%40AMER.OAUTHAP

我发现问题是由回调 URL 的设置方式引起的。它必须与您在 TD 开发人员 API 页面上的应用程序详细信息中输入的回调 URL 完全相同。我尝试了几种排列,确实要获得工作授权,两者必须相同。例如。 https 或 http.. 是否以“/”结尾,这很重要。也不需要URL对其进行编码。