【问题标题】:Python get info from API / Oauth AuthenticationPython 从 API / Oauth 身份验证获取信息
【发布时间】:2023-03-22 09:06:01
【问题描述】:

这是我第一次尝试使用 API,称 API 为 OPS。 我想在我的 python 代码中使用 API (OAuth 2) 获取信息。

资源网址是: http://ops.epo.org/3.2/rest-services/register/{publication}/{EPODOC}/{EP2814089}/biblio

我也收到了:

消费者密钥:O220VlTQqAmodifiedsf0YeqgM6c

消费者密钥:swWmodified3edjORU

文档指出:

OPS 使用 OAuth 框架进行身份验证和授权。此时在 时间,仅支持“客户端凭据”流使用消费者密钥和 消费者秘密。

要遵循的实际步骤是:

第 1 步: 客户端将消费者密钥和消费者秘密转换为 Base64Encode(消费者密钥:消费者秘密)。 这应该使用您正在开发客户端的语言以编程方式完成 应用。为了这个例子的目的,一个公共网站被用来执行 这种转换。 通过输入冒号分隔的客户端凭据,将生成编码响应。 然后,此响应将用于基本身份验证。

第 2 步: 客户端使用基本身份验证请求访问令牌,并提供其 通过加密 HTTPS 使用 base64Encoding 的消费者密钥和消费者秘密 连接:

OPS 使用 basic 验证在 Authorization 标头中传递的客户端凭据 身份验证方法。 如果凭据有效,OPS 会使用有效的访问令牌进行响应。

第 3 步:客户端使用授权标头中的访问令牌访问 OPS 资源 (不记名令牌)通过加密的 HTTPS 连接

我尝试了一些带有请求的代码示例,但直到现在都没有任何效果。

【问题讨论】:

    标签: python oauth-2.0 python-requests


    【解决方案1】:

    OAuth2 RFC-6749 中描述了客户端凭据流程。客户端 id 和密码是 base64 编码的基本身份验证方案,如RFC-7617中所述

    您应该能够使用以下 Python 代码获取令牌:

    import requests
    import base64
    
    url = 'https://ops.epo.org/3.2/auth/accesstoken'
    data = {"grant_type": "client_credentials"}
    
    creds = base64.b64encode("O220VlTQqAmodifiedsf0YeqgM6c:swWmodified3edjORU".encode())
    headers = {'Authorization': 'Basic ' + creds.decode('UTF-8'), 'Content-Type': 'application/x-www-form-urlencoded'}
    
    response = requests.post(url, headers=headers, data=data)
    
    access_token = response.json()["access_token"]
    

    【讨论】:

      【解决方案2】:

      使用上一个响应时,我可以获得一个令牌。 (非常感谢您的回答)

      所以我尝试了:

      myUrl = 'http://ops.epo.org/3.2/rest-services/register/publication/EPODOC/EP2814089/biblio'
      
      header = {'PRIVATE-TOKEN': myToken}
      response = requests.get(myUrl, headers=header)
      print(response.text)
      

      但我得到了 403 错误。

      我终于有了一个特定的库来完成这项工作:

      EPO OPS Library

      但我还是不知道如何自己做......

      【讨论】:

      • header = {'Authorization': "Bearer " + myToken}替换header = {'PRIVATE-TOKEN': myToken}
      猜你喜欢
      • 2018-02-28
      • 1970-01-01
      • 2011-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-28
      • 1970-01-01
      相关资源
      最近更新 更多