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

Python-基本授权(OAuth2.0)从API检索访问令牌

丰俊艾
2023-03-14

我试图使用以下所需信息从API生成访问令牌:

授权endpoint:https://api.paylocity.com/identityserver/connect/token

其他值请求必须在请求正文中发布以下表单编码值:

grant_type=client_credentials范围=WebLinkAPI

我尝试使用Python'requests'包,但没有成功,请参见下面:

import requests

url = "https://api.paylocity.com/IdentityServer/connect/token"

headers = {
    'Authorization': "Basic **********:**********",
    'Content-Type': "application/x-www-form/urlencoded"
    }

body = {
    'grant_type': "client_credentials",
    'scope': 'WebLinkAPI'
}

response = requests.request("POST", url, headers=headers, params=body)

print(response.text)

我已经验证了我的base64编码的用户名和密码是正确的,它看起来类似于“g/random:morerandom==”,当我将它们添加到postman时,它可以工作,所以我的凭据是正确的。会出什么问题?

共有1个答案

姬雪松
2023-03-14

我解决了这个。有两个问题,授权头没有使用ASCII作为目标字符集,并使用base64编码。另一个问题是试图将额外的值添加到参数中,而不是请求包中的主体中。解决办法是用“数据”代替“参数”。解决办法如下:

url = "https://api.paylocity.com/IdentityServer/connect/token"

body = "grant_type=client_credentials&scope=WebLinkAPI"
headers = {
    'Content-Type': "application/x-www-form-urlencoded",
    'Authorization': "Basic ***(base64ASCII)username:password***",
    }

response = requests.request("POST", url, data=body, headers=headers)

print(response.text)
 类似资料:
  • 我正在开发我的第一个Spotify应用程序,现在我正在处理授权过程。 到目前为止,我已经成功地从https://accounts.spotify.com/authorize 现在我通过PHP CURL request发送一个POST请求来获取我的访问令牌。 Spotify对此步骤的说明 我不断收到以下 JSON 错误响应,指示我的grant_type无效,它为我提供了三个有效的选项: {"erro

  • 我遇到了使用文档签名 API 的第一个障碍,需要一些帮助。 我将docusignrestapi集合导入到Postman中。我设置了iKey、iSec、encodedKeys和codeFromUrl变量。 当尝试发送'01-授权代码授予访问令牌'post API时,我每次都得到以下响应。 我尝试从Postman中删除所有内容,包括环境,并从DocuSign中删除该应用程序,然后重新开始,以便我的所有

  • 我通过在我的租户上创建azure应用程序来使用PowerBI报告我的项目。报告在我的本地环境中流畅地呈现,但当我将应用程序发布到azure时,PowerBI报告将不会显示,并给出了这个错误。 {“error”:“invalid_grant”,“error_description”:“AADSTS65001:用户或管理员尚未同意使用ID为'55A3B089-C45C-4496-B2DB-63C98F

  • 我试图允许用户通过谷歌API的帮助通过gmail登录。我可以登录,也可以检索个人信息,但不能检索,刷新和访问令牌,这是在成功登录的用户生成。因为我需要将详细信息发送到服务器,所以我如何检索它。 提前谢了。

  • OAuth2ClientOptions credentials=new OAuth2ClientOptions().setClientId(clientId).setClientSecret(clientSecret).setFlow(Oauth2FlowType.client).setTokenPath(“oauth/token URL”); 错误:访问令牌错误;io/vertx/ext/jwt

  • 我想避开keycloak登录页面。我将这个“避免keycloak默认登录页面和使用项目登录页面”链接引用到“http://localhost:5555/auth/realms/master/protocol/openid-connect/token”链接,并能够使用post方法获得访问令牌。 在此步骤中获得访问令牌后,提到要传递以下头部 标题:{ 但是不清楚将访问令牌传递到哪里,响应是什么,请求类