当前位置: 首页 > 知识库问答 >
问题:

Django和Twitterrequest_token

邓威
2023-03-14

我被推特登录所困扰。现在我意识到,这是一个分为几步的事情(与OAuth2相比相当愚蠢):

>

  • 向/request\u令牌endpoint发出POST请求,以获取初始令牌

    使用(1)中的令牌参数将用户重定向到 /authenticate以获取另一个令牌

    使用(2)中的令牌向/访问令牌发出另一个POST请求,并最终获得所需的令牌。

    现在我有点纠结于(1):twitter API总是返回错误215,错误的身份验证数据。

    代码是这样的:

        key = b"my_key&"
        raw_init = "POST" + "&" + quote("https://api.twitter.com/1.1/oauth/request_token", safe='')
        time_param = str(calendar.timegm(time.gmtime()))
        raw_params = quote('oauth_callback', safe='') + "=" + quote('http://example.com/twitter-auth/', safe='')
        raw_params += "&" + quote('oauth_consumer_key', safe='') + "=" + quote('consumer_key', safe='')
        raw_params += "&" + quote('oauth_nonce', safe='') + "=" + quote('aAbBcDadadwrwwrwrwr', safe='')
        raw_params += "&" + quote('oauth_signature_method', safe='') + "=" + quote('HMAC-SHA1', safe='')
        raw_params += "&" + quote('oauth_timestamp', safe='') + "=" + quote(time_param, safe='')
        raw_params += "&" + quote('oauth_version', safe='') + "=" + quote('1.0', safe='')
        #
        raw_params = quote(raw_params, safe='')
        raw_final = bytes(raw_init + "&" + raw_params, encoding='utf-8')
        hashed = hmac.new(key, raw_final, sha1)
    
        request.raw_final = hashed
    
        request.auth_header = base64.b64encode(hashed.digest()).decode()
    

    上面的代码为授权标头制作签名。

    POST请求:

        url = 'https://api.twitter.com/1.1/oauth/request_token'
        data = {}
        oauth_sign_method = "HMAC-SHA1"
    
        headers = {'Authorization': 'OAuth oauth_nonce="aAbBcDadadwrwwrwrwr"' +
                                    'oauth_callback="' + quote('http://example.com/twitter-auth/', safe='') + '",' +
                                    'oauth_signature_method="HMAC-SHA1",' +
                                    'oauth_timestamp="' + time_param + '",'+
                                    'oauth_consumer_key="consumer_key",'+
                                    'oauth_signature="' + base64.b64encode(hashed.digest()).decode() + '",'+
                                    'oauth_version="1.0"'}
    
        r = requests.post(url, data=json.dumps(data), headers=headers)
    
        answer = json.loads(r.text)
    
        request.twitter_answer = answer
    

    答案总是错误215-错误的身份验证数据。知道为什么吗?

  • 共有1个答案

    濮阳国兴
    2023-03-14

    我还在为twitter oauth构建Django后端。

    请转到这里检查python代码,我成功地使用了该代码片段。

    获取twitter request\u令牌的Python代码

     类似资料:
    • 问题内容: 除了的ORM 之外,还有其他人使用过吗? 我想将Django的ORM用于对象操作,将SQLalchemy用于复杂的查询(例如那些需要左外部联接的查询)。 可能吗? 注意:我知道,但是该项目似乎尚未准备就绪。 问题答案: 我会怎么做 在Django orm中定义架构,让它通过syncdb编写数据库。你将获得管理界面。 在view1中,你需要一个复杂的联接

    • 我想在我的django项目中使用fullcalendar jquery插件。我有一个入门模型 它只有一个日期属性。我知道fullcalendar使用start和end,但也会使用start和end:) 我的ajax视图如下 我的模板.html 我必须在我的数据库中的测试对象,所有在今天的日期和四个以上在以前的日子。我还启用了时区,因此我的模型存储了感知的datetime对象 但fullcalend

    • 问题内容: 我正在尝试通过Django管理员上传图像,然后在前端的页面中或仅通过URL查看该图像。 请注意,所有这些都在我的本地计算机上。 我的设置如下: 我已将upload_to参数设置为’images’,并且文件已正确上传到目录: 但是,当我尝试通过以下URL访问图像时: 我收到404错误。 我需要为上传的媒体设置特定的URLconf模式吗? 任何建议表示赞赏。 问题答案: Django> =

    • 问题内容: 对于Django 1.1。 我的models.py中有这个: 当更新一行时,我得到: 我数据库的相关部分是: 这值得关注吗? 附带问题:在我的管理工具中,这两个字段没有显示。那是预期的吗? 问题答案: 设置了属性的任何字段都将继承,因此不会显示在管理面板中。过去有过关于使参数消失的讨论,尽管它们仍然存在,但我认为你最好只使用自定义save()方法。 因此,为了使其正常工作,我建议不要使

    • 问题内容: 来自http://docs.angularjs.org/api/ng。$ http,它说我们应该设置默认标头以包含令牌,因此我正在关注它。 我的代码是这样的 如您所见,我已经应用了多种方法,但是无法使用csrf令牌设置标头。我遇到的两个错误是 未捕获的错误:未知提供程序:$ httpProviderProvider <-$ httpProvider 我究竟做错了什么? 问题答案: 如果

    • 问题内容: 给定具有JSONField的Django模型,使用对其进行序列化和反序列化的正确方法是什么? 我已经尝试过创建一个自定义和覆盖和: 但是,当我尝试使用来更新模型时,JSONField对象中的所有浮点数都变为字符串。 问题答案: 如果你使用的是Django Rest Framework> = 3.3,那么现在将包含 JSONField序列化程序。现在这是正确的方法。 如果你使用的是Dja