英文:
Why does logic apps retrieve Content-Type must be application/x-www-form-urlencoded if it is passed?
问题
我正在开发一个逻辑应用,它应该每天调用特定的API一次,以检索响应(令牌),然后在接下来的步骤中(尚未编写)将联系另一个API,最后将结果存储在Google电子表格中。问题出在第一次调用,根据MailUp文档的阅读,我必须发送一个调用到一个URL来检索令牌,使用用户名和密码进行身份验证(https://help.mailup.com/display/mailupapi/Authenticating+with+OAuth+v2),但它不起作用!有人可以帮助我吗?
{
"definition": {
"$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
"actions": {
"HTTP": {
"inputs": {
"headers": {
"Authorization": "BASE64_ENCODED_CLIENTCREDENTIALS",
"Content-Type": "application/x-www-form-urlencoded"
},
"method": "POST",
"queries": {
"grant_type": "password",
"password": "password",
"username": "username"
},
"uri": "https://services.mailup.com/Authorization/OAuth/Token"
},
"runAfter": {
"Initialize_variable": [
"Succeeded"
]
},
"type": "Http"
},
"Initialize_variable": {
"inputs": {
"variables": [
{
"name": "responseBody",
"type": "String",
"value": ""
}
]
},
"runAfter": {},
"type": "InitializeVariable"
},
"type": "ApiConnection"
},
"Set_variable": {
"inputs": {
"name": "responseBody",
"value": "@{body('HTTP')}"
},
"runAfter": {
"HTTP": [
"Succeeded"
]
},
"type": "SetVariable"
}
},
"contentVersion": "1.0.0.0",
"outputs": {},
"parameters": {
"$connections": {
"defaultValue": {},
"type": "Object"
}
},
"triggers": {
"Recurrence": {
"evaluatedRecurrence": {
"frequency": "Day",
"interval": 1
},
"recurrence": {
"frequency": "Day",
"interval": 1
},
"type": "Recurrence"
}
}
},
"parameters": {
"$connections": {
"value": {
}
}
}
}
英文:
I'm developing a Logic app that should call a specific API one time for a day to retrieve the response (a token) and on the next steps (not already written) it will contact another API and finally it will store the result on a Google spreadsheet.
The problem is on the first call, reading the documentation of MailUp I must send a call to an URL to retrieve the token using username e password authentication ( https://help.mailup.com/display/mailupapi/Authenticating+with+OAuth+v2 ) but it doesn't work!
Can someone help me?
{
"definition": {
"$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
"actions": {
"HTTP": {
"inputs": {
"headers": {
"Authorization": "BASE64_ENCODED_CLIENTCREDENTIALS",
"Content-Type": "application/x-www-form-urlencoded"
},
"method": "POST",
"queries": {
"grant_type": "password",
"password": "password",
"username": "username"
},
"uri": "https://services.mailup.com/Authorization/OAuth/Token"
},
"runAfter": {
"Initialize_variable": [
"Succeeded"
]
},
"type": "Http"
},
"Initialize_variable": {
"inputs": {
"variables": [
{
"name": "responseBody",
"type": "String",
"value": ""
}
]
},
"runAfter": {},
"type": "InitializeVariable"
},
"type": "ApiConnection"
},
"Set_variable": {
"inputs": {
"name": "responseBody",
"value": "@{body('HTTP')}"
},
"runAfter": {
"HTTP": [
"Succeeded"
]
},
"type": "SetVariable"
}
},
"contentVersion": "1.0.0.0",
"outputs": {},
"parameters": {
"$connections": {
"defaultValue": {},
"type": "Object"
}
},
"triggers": {
"Recurrence": {
"evaluatedRecurrence": {
"frequency": "Day",
"interval": 1
},
"recurrence": {
"frequency": "Day",
"interval": 1
},
"type": "Recurrence"
}
}
},
"parameters": {
"$connections": {
"value": {
}
}
}
}
答案1
得分: 1
由于访问问题,我将无法在这里使用https://help.mailup.com/display/mailupapi/Authenticating+with+OAuth+v2
,但我将使用https://login.microsoft.com/{tenant_id}/oauth2/token
来生成持票人令牌,就像您尝试在逻辑应用中生成它们一样。
尝试按以下格式构造请求体,例如在您的情况下,使用**'&'代替'逗号'**。同时,也要使用clientId和client_password,以及用户名和密码。
这里我使用以下输入来生成令牌:
URL https://login.microsoft.com/{tenant_id}/oauth2/token
Headers Content-Type: application/x-www-form-urlencoded
Body grant_type=password&resource=https://graph.microsoft.com&client_id=<your client ID>&client_secret=<your client secret>&username=<username>&password=<password>
如果您参考上述步骤,您将能够生成访问令牌和刷新令牌。
英文:
Due to access issues, I will not be able to use https://help.mailup.com/display/mailupapi/Authenticating+with+OAuth+v2
here but I will use https://login.microsoft.com/{tenant_id}/oauth2/token
to generate bearer token in the same way you are trying to generate them in logic app.
Try to structure the body in the following format like use '&' instead of 'comma' in your case. Use clientId and client_password too along with the username and password.
Here I am taking below inputs to generate token:
URL https://login.microsoft.com/{tenant_id}/oauth2/token
Headers Content-Type: application/x-www-form-urlencoded
Body grant_type=password&resource=https://graph.microsoft.com&client_id=<your client ID>&client_secret=<your client secret>&username=<username>&password=<password>
Output
If you refer the above steps, you will be able to generate access token and refresh token too.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论