如何解决Twitter / Tweepy OAuth-如何保存oauth_token以在REST API设置中的回调中进行验证
我正在使用REST API设置编写一个简单的Twitter身份验证流程。客户端只是普通的javascript / Vue代码-没有服务器端渲染。这将消耗使用Django Rest Framework构建的后端REST API,并使用tweepy库包装Twitter API。
我正在通过以下步骤进行身份验证:
- 用户单击“登录到Twitter”按钮,这会触发对我的后端API / get-url / 的调用
- API调用Twitter的get_authorization_url(使用我的Twitter应用程序凭据),获取令牌,并将此重定向URL返回给客户端
- 客户端将用户重定向到Twitter URL以完成身份验证
- 在回调中,客户端将所有参数传递到后端API端点
- API获取令牌和机密;使用用户身份验证创建tweepy API;并调用verify_credentials
- 如果一切正常,我们将在与Twitter用户绑定的Django数据库中创建一个用户帐户,并存储其令牌和密码;用JWT登录用户;并返回200成功的令牌。
- 前端处理JWT令牌刷新等;但在其他API上将其用于身份验证。
但是,我有些困惑:Twitter文档建议在我的第2步中,我应该保存request_token,以便在第5步中,我可以检查它是否与Twitter API返回的内容匹配( https://developer.twitter.com/en/docs/authentication/guides/log-in-with-twitter。
tweepy文档示例(http://docs.tweepy.org/en/latest/auth_tutorial.html)建议将其存储在会话中,然后在回调中检查它们并将其从会话中删除。
但是,在像我这样的REST API设置中,这(至少对我而言)没有意义。我很困惑如何将其临时存储在服务器上,以便在回调时可以检查其值-在重定向之前,我不知道该用户将该令牌“绑定”到该用户,也没有用户记录可存储在其中数据库。
我能想到的就是(2)上的API将其返回给客户端;然后可以在重定向之前将其存储在Cookie中;然后在回调中,将其传递回服务器...但是这似乎非常令人费解,以纯文本格式完成所有操作,我认为使执行此额外检查的值无效。
希望我在这里遗漏了一些明显的东西。
解决方法
您是否尝试过使用python-social-auth库?
from_the_docs:twitter位于受支持的身份验证后端中。
,您可以尝试让用户使用基本详细信息进行注册,然后设置一个“Twitter 链接”按钮,显示他们必须激活 Twitter 连接才能在您的网络应用上执行任何其他操作
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。