代码之家  ›  专栏  ›  技术社区  ›  Hsn

Rest API的OAuth1身份验证

  •  1
  • Hsn  · 技术社区  · 6 年前

    我需要根据下面给出的场景进行post请求。我只有consumers\u key和consumer\u secret。我不知道从哪里可以得到所有其他领域。我是否还需要发送授权请求,包括标头中的密钥?

    必须使用上述响应中的使用者密钥获取应用程序的请求令牌。

    要求

    POST /public/v1/oauth1/request_token
      Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
      Authorization: OAuth
        oauth_consumer_key="btgd2cg2bm3lbjqsfv150fj9q8",
        oauth_signature_method="HMAC-SHA1",
        oauth_timestamp="1467792887",
        oauth_nonce="9fd50a6f-40e0-41be-8809-34aa832b688e",
        oauth_callback="oob",
        oauth_signature="hcE6Q3boTytkHmM72xegCP1Y3W4%3D"
    

    我在做这样的事

    import requests
    url="https://api.discovergy.com"
    request_token_url=url+'/public/oauth1/request_token'
    head={'Accept':'text/html, image/gif, image/jpeg, *;q=.2, '/';q=.2',
    'Authorization':'OAuth'}
    data= dict(oauth_consumer_key=client_key, oauth_signature_method='HMAC-SHA1', oauth_timestamp='1467792887', oauth_nonce='9fd50a6f-40e0-41be-8809-34aa832b688e', oauth_callback='oob', oauth_signature='hcE6Q3boTytkHmM72xegCP1Y3W4%3D')
    
    r=request.post(url=request_token_url, data=data, headers=head)
    print(r.content)
    

    它提供400状态。。

    2 回复  |  直到 6 年前
        1
  •  0
  •   BoboDarph    6 年前

    Oauth1在python中为请求提供了一个不同的授权构建模块。看到了吗 documentation 以及 help files 有关使用示例。

    您得到的400 RC是因为您试图发布到该端点,而该方法不受支持。很可能你只能从那里得到。

        2
  •  0
  •   andig    6 年前

    Discovery API文档位于 https://api.discovergy.com/docs/ . 我在上安装了一个小型PHP Discovery API客户端 https://github.com/andig/discovergy . 它演示了整个过程。对于 /request_token POST(它是POST)确保使用从中获取的使用者密钥 /consumer_token ,而不是Discovery提供的凭据。

    使现代化 我还注意到,根据您的示例,您似乎将参数作为POST body传递。它们需要像您所显示的第一个代码块一样位于标题中。

    更新2 还要确保至少接受正确的内容类型 application/json ,可能更高 text/plain