如何使用Azure Logic应用程序请求OAUTH访问令牌?

wooyq4lh  于 2023-06-24  发布在  其他
关注(0)|答案(1)|浏览(171)

在Postman中,使用form-data选项,我能够成功地从Petfinder API请求访问令牌(请参见屏幕截图1),但我无法在Azure Logic应用程序中重现此操作
截图一

我尝试在Azure逻辑应用程序中使用以下HTTP操作,填充和不填充Header。(见截图2和3)
截图2

截图3

这是我在输出中得到的错误消息

  • “body”:{“type”:“https://httpstatus.es/400“,“status”:400,“标题”:“unsupported_grant_type”,“detail”:“授权服务器不支持授权授予类型。",“errors”:[ {“code”:“unsupported_grant_type”,“title”:“未授权”,“消息”:“授权服务器不支持授权授予类型。- 检查是否提供了所有必需的参数”,“详细信息”:“授权服务器不支持授权授予类型。- 检查是否提供了所有必需的参数”,“href”:“http://developer.petfinder.com/v2/errors.html#unsupported_grant_type“} ],“提示”:“检查是否已提供所有必需的参数”} }*
hlswsv35

hlswsv351#

我尝试在我的环境中使用URLPost https://login.microsoft.com/tenant_id/oauth2/token重现这个问题,因为由于国家限制,我无法在https://www.petfinder.com/developers/v2/docs/中创建帐户,但在这两种情况下获取令牌的过程是相似的。
我的工作流程如下-

收到HTTP请求时触发器中,我采用了下面的模式。

{
"properties": {
"client_id": {
"type": "string"
},
"client_secret": {
"type": "string"
},
"tenant_id": {
"type": "string"
}
},
"type": "object"
}

然后我添加了HTTP来获取bearer token。

请注意,这里Content-Type = multipart/form-data; boundary=--boundary请求体的格式如下

----boundary
Content-Disposition: form-data; name="grant_type"

client_credentials
----boundary
Content-Disposition: form-data; name="client_id"

your client_id
----boundary
Content-Disposition: form-data; name="client_secret"

your client_secret
----boundary--

然后添加了数据操作-解析JSON动作,使用如下模式

{
"properties": {
"access_token": {
"type": "string"
},
"expires_in": {
"type": "string"
},
"expires_on": {
"type": "string"
},
"ext_expires_in": {
"type": "string"
},
"not_before": {
"type": "string"
},
"resource": {
"type": "string"
},
"token_type": {
"type": "string"
}
},
"type": "object"
}

触发输出-

相关问题