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

使用授权代码OAuth2获取新的访问令牌-使用Robot框架

劳星晖
2023-03-14

我在使用带有Oauth2的Robot framework获取带有授权类型授权代码的访问令牌时遇到了一些问题。我们还使用用户名/密码验证,在给出以下参数后,我们得到我们的访问令牌:授权类型、回调URL、验证URL、访问令牌URL、客户端ID、客户端机密、范围、状态。

我也尝试过使用RequestsLibrary和ExtendedRequestsLibrary,但到目前为止还没有成功。实际上我不知道如何添加参数:回调网址,身份验证网址,访问令牌网址和状态。

First try - using RequestsLibrary 

Get admin token
&{HEADER_TOKEN}=    Create Dictionary   Content-Type=${CONTENT_TYPE} 
 &{DATA_TOKEN}=    Create Dictionary     token_name=backend_token    grant_type=${GRANT_TYPE}   redirect_uri =${CALLBACK_URL}   auth_url=${AUTH_URL}   access_token_url=${ACCESS_TOKEN_URL}    client_id=${CLIENT_ID}    client_secret=${CLIENT_SECRET}    scope=${SCOPE}    state=${STATE}   username=${USERNAME}    ${PASSWORD}
 ${BACKEND_RESPONSE}=   RequestsLibrary.Post Request    ${BACKEND_SESSION}    /oauth/token      data=${DATA_TOKEN}     headers=${HEADER_TOKEN} 
 Log to console    ${BACKEND_RESPONSE}
 Should Be Equal As Strings  ${BACKEND_RESPONSE.status_code}  200

Second try - using ExtendedRequestsLibrary 

Get brand new admin token
    ${SESSION_RESPONSE}=    Create Password Oauth2 Session    client    ${TOKEN_URL}    ${CLIENT_ID}    ${CLIENT_SECRET}    ${USERNAME}    ${PASSWORD}    base_url=${BASE_URL}

    &{HEADER_TOKEN}=    Create Dictionary   Content-Type=${CONTENT_TYPE} 
    &{DATA_TOKEN}=    Create Dictionary     token_name=client   grant_type=${GRANT_TYPE}   callback_url=${CALLBACK_URL}   auth_url=${AUTH_URL}   access_token_url=${ACCESS_TOKEN_URL}    client_id=${CLIENT_ID}    client_secret=${CLIENT_SECRET}    scope=${SCOPE}    state=${STATE}
    ${BACKEND_RESPONSE}=   ExtendedRequestsLibrary.Post Request   client    /oauth/token      data=${DATA_TOKEN}     headers=${HEADER_TOKEN} 
    Log to console    ${BACKEND_RESPONSE}
    Should Be Equal As Strings  ${BACKEND_RESPONSE.status_code}  200
    Log to console    ${BACKEND_RESPONSE.status_code}

如果您有任何想法,请告诉我。

thx!

共有1个答案

杨宏儒
2023-03-14

使用RequestsLibrary尝试使用这种方法,它应该有效:-

Create Session   baseUri   https://xxxxxx.xx.xxx/xxx/xx      verify=True
&{params}=  Create Dictionary   client_id=${client_id}   client_secret=${client_secret}   grant_type=${grant_type}
&{headers}=  Create Dictionary   Content-Type=application/json
${resp}=  Post Request  baseUri  /oauth/token    none    none    ${params}  ${headers}
Log to Console  ${resp.json()['access_token']}
Status Should Be  200            ${resp}

您在发布请求中将data=${DATA_TOKEN}作为正文传递。您需要将其作为查询参数发送。第一个参数将是别名第二个是uri第三个是数据第四个是Json,第五个是查询参数,因此在Post请求base uri/oauth/token none none ${ params } ${ headers }中,您会发现第三个和第四个参数为none。希望这有用

 类似资料:
  • 我想我获得了使用授权代码授予类型的OAuth2流。资源所有者登录到服务器,然后使用授权代码重定向到客户端。然后客户端使用授权代码向授权服务器查询访问令牌和刷新令牌。这就是我困惑的地方。 当访问令牌过期时,客户端应该使用授权码还是刷新令牌来获取新的访问令牌?如果您有授权代码,为什么要使用刷新令牌? 注:我并不是在找一个回答说“刷新令牌是可选的”,因为我正在为amazon-alexa编写这个服务器,这

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

  • 本文向大家介绍使用curl通过代码授权获取Dropbox API的OAuth 2访问令牌,包括了使用curl通过代码授权获取Dropbox API的OAuth 2访问令牌的使用技巧和注意事项,需要的朋友参考一下 示例 缩写自https://blogs.dropbox.com/developers/2013/07/using-oauth-2-0-with-the-core-api/: 步骤1:开始授

  • 我想使用上传一个pdf文件到Google Drive,用于自动测试目的。 我已经在Google云平台上创建了一个帐户(获得了客户端ID和机密),并启用了Google Drive API。 谢了。

  • 使用google oauth2库,我可以在用户第一次通过时成功地对其进行身份验证,获得他们的刷新令牌和第一次访问令牌。直到令牌过期,一切都按预期工作。 但是,当访问令牌过期时,我需要获得一个新的访问令牌,并使用现有的刷新令牌将这些令牌存储在我的数据存储区中。我知道文档中规定了令牌过期时应该重新提取它们自己,但是当我为每个调用创建一个新客户机(以确保令牌不会在用户之间重用)时,我认为客户机在令牌有机

  • 我使用WSO2 API manager 1.10.0,WSO2 Identity Server 5.1.0配置为密钥管理器,MySQL Community Server 5.6用于数据库。当我尝试刷新通过授权代码授权类型获得的令牌(refresh_token授权类型)时,我收到400错误请求错误(invalid_grant -提供的授权授权无效),并且我无法获得新令牌。然后,我尝试使用client