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

Fal*_*per 7 python-3.x ameritrade

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

根据平台,我需要访问的端点是: 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 时,我注意到它们实际上可能引用的是应用程序、消费者密钥?所以我就是这样做的,但是当尝试查询信息时,它返回:第三方应用程序可能正在尝试对您的帐户进行未经授权的访问。 我认为它是消费者密钥的原因列于: 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
  )
Run Code Online (Sandbox Code Playgroud)

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

它不会继续执行,而是返回包含该信息的 400 错误。但我不确定出了什么问题。

Ale*_*lex 7

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

您是否仔细检查过您是否正确复制了回调 URL、协议名称、端口、尾部斜杠以及所有内容?另外,请考虑使用API 库,而不是编写自己的库。您可以在此处找到有关此特定错误的文档。


小智 5

我遇到了这个问题,我只需在应用程序的回调 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