python-oauth2 与 Twitter 的 oauth_callback
我使用 Twython 作为我的 Twitter API 包装器,并使用 oauth2 来处理身份验证。我试图通过 Twitter 使用登录,然后在 oauth dance 后将他重定向到动态生成的 oauth_callback。然而,这似乎不可能直接使用这些开箱即用的库来实现。我的问题是我的 oauth 客户端 (python-oauth2) 不支持回调 url。我觉得这很奇怪,因为这是 Twython 使用的默认 oauth 客户端——为什么他们要编写代码来适应动态回调的使用,然后将库与不支持回调的 oauth 客户端捆绑在一起? 第 54 行设置为 false,因此我的回调网址永远不会包含在请求令牌 URL 中,正如oAuth 1.0a 规范中所要求的 。
我尝试修改 Twython 和 oauth2,但我不断遇到问题。我想知道是否有支持 oauth_callback 的 python-oauth2 替代方案,或者可能有一个可以正确处理 oauth 的替代 twitter 库。
I'm using Twython as my Twitter API wrapper, and oauth2 to handle authentication. I'm trying to have a use login via twitter, and then redirecting him after the oauth dance to a dynamically generated oauth_callback. This, however, appears to be impossible to do with these libraries straight out of the box. My problem is that my oauth client (python-oauth2), doesnt support callback urls. I find this very strange because this is the default oauth client used by Twython -- why would they bother writing code to accomodate the use of a dynamic callback and then bundle the library with an oauth client that doesn't support callbacks? Line 54 is set to false, therefore my callback url is never included in the request token url, as required in the oAuth 1.0a specs.
I've tried modifying both Twython and oauth2, but I keep running into problems. I'd like to know if there is an alternative to python-oauth2 that supports oauth_callback, or maybe an alternative twitter library that would handle the oauth properly.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
找到答案这里
你所拥有的一切要做的就是向 Twython 传递参数callback_url,并将 Twython.py 中的第 205 行替换为
resp, content = client.request(request_token_url, "POST",body=urllib.urlencode({'oauth_callback':my_callback_url}))
注意,如果您希望 Twitter 尊重您的 oauth_callback 参数,则请求必须是 POST。
Found the answer here
All you have to do is pass Twython the parameter callback_url and replace line 205 in Twython.py with
resp, content = client.request(request_token_url, "POST",body=urllib.urlencode({'oauth_callback':my_callback_url}))
Notice, if you want twitter to respect your oauth_callback argument, the request must be a POST.