Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python从API/Oauth身份验证获取信息_Python_Oauth 2.0_Python Requests - Fatal编程技术网

Python从API/Oauth身份验证获取信息

Python从API/Oauth身份验证获取信息,python,oauth-2.0,python-requests,Python,Oauth 2.0,Python Requests,这是我第一次尝试使用API,API被称为OPS。 我希望在python代码中使用API(OAuth 2)获取信息 资源URL为: 我还收到: 消费者密钥:O220VLTQQADModifiedsF0YEQGM6C 消费者密钥:swWmodified3edjORU 文件指出: OPS使用OAuth框架进行身份验证和授权。此时此刻 同时,使用使用者密钥和 消费者的秘密 具体步骤如下: 步骤1:客户端将使用者密钥和使用者机密转换为 Base64Encode(使用者密钥:使用者机密)。 这应该使用开发

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

资源URL为:

我还收到:

消费者密钥:O220VLTQQADModifiedsF0YEQGM6C

消费者密钥:swWmodified3edjORU

文件指出:

OPS使用OAuth框架进行身份验证和授权。此时此刻 同时,使用使用者密钥和 消费者的秘密

具体步骤如下:

步骤1:客户端将使用者密钥和使用者机密转换为 Base64Encode(使用者密钥:使用者机密)。 这应该使用开发客户机的语言以编程方式完成 应用于。在本例中,使用公共网站执行以下操作: 这个转换。 通过输入冒号分隔的客户端凭据,将生成编码响应。 然后将此响应用于基本身份验证

步骤2:客户端使用基本身份验证请求访问令牌,并提供其 在加密HTTPS上使用Base64编码的使用者密钥和使用者机密 连接:

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

步骤3:客户端使用授权头中的访问令牌访问OPS资源 (承载令牌)通过加密的HTTPS连接


我尝试了一些带有请求的代码示例,但到目前为止,没有任何效果。

OAuth2中描述了客户端凭据流。客户端id和密码在基本身份验证方案中以base64编码,如中所述

您应该能够使用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"]

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

所以我试着:

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错误

我终于找到了一个专门的图书馆来做这项工作:


但是我仍然不知道自己怎么做…

header={'PRIVATE-TOKEN':myToken}
替换
header={'Authorization':“Bearer”+myToken}