Skip to main content

Notifications

Community site session details

Community site session details

Session Id :
Power Apps - Building Power Apps
Unanswered

HTTP with Microsoft Entra ID (preauthorized) connector issue

(1) ShareShare
ReportReport
Posted on by 92

Hi folks,

 

I have a Power App that includes functionality where a user can search a large sharepoint document library. I followed Reza Dorrani's guide on using the Office365Groups connector and the httprequest functionality, but have now learned that this is deprecated and I wish to replace this before my app breaks.

I have attempted to transition my old code across to the HTTP with Microsoft Entra ID (preauthorized) connector and I'm attempting to perform an Invoke an HTTP Action but cannot figure out why I consistently get a "badRequest - the call failed, please try again" error.

I'm hoping one of you Power Apps geniuses can cast your eyes over this code and find my mistake(s):

 

 

UpdateContext({searchPerformed: false});

// Construct the request body JSON
Set(varRequestBody, "{
 ""requests"": [
 {
 ""entityTypes"": [
 ""driveItem""
 ],
 ""query"": {
 ""queryString"": ""title:\"""& txtSearchbox.Text &"\"" AND isDocument=false
 path:\""https://xxxx.sharepoint.com/sites/xxxxx/Shared%20Documents/General/xxxx/xxxx\"" OR
path:\""https://xxxx.sharepoint.com/sites/xxxxx/Shared%20Documents/General/xxxx/xxxx\"" OR path:\""https://xxxx.sharepoint.com/sites/xxxxx/Shared%20Documents/General/xxxx/xxxx\"" OR path:\""https://xxxx.sharepoint.com/sites/xxxxx/Shared%20Documents/General/xxxx/xxxx\"" OR path:\""https://xxxx.sharepoint.com/sites/xxxxx/Shared%20Documents/General/xxxx/xxxx\"" OR 
path:\""https://xxxx.sharepoint.com/sites/xxxxx/Shared%20Documents/General/xxxx/xxxx\"" OR 
path:\""https://xxxx.sharepoint.com/sites/xxxxx/Shared%20Documents/General/xxxx/xxxx\"""" 
 },
 ""fields"": [
 ""title"",
 ""url""
 ]
 }
 ]
}");

// Use HTTP with Microsoft Entra ID (preauthorized) connector
Set(searchResults, 'HTTPwithMicrosoftEntraID(preauthorized)'.InvokeHttp(
 "POST",
 "https://graph.microsoft.com/v1.0/search/query",
 {
 headers: Table(
 {key: "Content-type", value: "application/json"}
 ),
 body: varRequestBody
 }
));

UpdateContext({searchPerformed: true});

 

 

I have tested the varRequestBody JSON inside the graph explorer and it works and returns results correctly. So I believe it has something to do with the connector.


Any help would be greatly appreciated!

Categories:
  • Omainesi Profile Picture
    92 on at
    HTTP with Microsoft Entra ID (preauthorized) connector issue
  • Ana Almeida Profile Picture
    on at
    HTTP with Microsoft Entra ID (preauthorized) connector issue
    Can you share the Reza video that you mentioned?
  • Omainesi Profile Picture
    92 on at
    Re: HTTP with Microsoft Entra ID (preauthorized) connector issue

    Thanks for your reply. I have spent a stupid amount of time on this and still have been unable to get it to work. I can successfully perform a GET request using this connector, but even the simplest POST request fails with a body: null error.

     

    I have been working directly with Power Apps premium support on this issue and so far they have been unable to find a solution. I hope to know more later this week.

    This might be a lot to ask, but if you have a bit of time spare could you try creating a POST request using this connector in a canvas app? Something simple like this: https://learn.microsoft.com/en-us/graph/api/driveitem-post-children?view=graph-rest-1.0&tabs=http 

    POST https://graph.microsoft.com/v1.0/me/drive/root/children
    Content-Type: application/json
    
    {
     "name": "New Folder",
     "folder": { },
     "@microsoft.graph.conflictBehavior": "rename"
    }

     

    And if you're able to get it to work, could you reply with the code you have used. I'm certain that once I see a working implementation of this connector then I could figure it out, but the documentation is poor and I've been unable to find any examples of this connector being used to send a POST request using Power Apps (plenty in Power Automate, but I too can get my code to work in Power Automate).

  • iAm_ManCat Profile Picture
    18,206 Most Valuable Professional on at
    Re: HTTP with Microsoft Entra ID (preauthorized) connector issue

    try break it down to using only one path for testing - did it succeed? Then add another path, etc etc - that way you can see if its the multiple paths or if its a specific path that is causing the issue

  • Omainesi Profile Picture
    92 on at
    Re: HTTP with Microsoft Entra ID (preauthorized) connector issue

    I've spent a bit more time on this today. I used the Power Apps monitor to take a look at what is going on under the hood and found this in the Properties > Request tab of the InvokeHttp operation:

     

     "body": {
     "method": "POST",
     "url": "https://graph.microsoft.com/v1.0/search/query",
     "headers": {
     "Content-Type": "application/json"
     },
     "body": null
     }
    }

     

    I'm assuming I'm getting a bad request error as the body is null. Any ideas as to why it is not passing through the body?

     

    In case it helps, here's what is returned in Monitor for the InvokeHttp > Details tab:


    {
     "status": 400,
     "duration": 70.29,
     "dataSource": "HTTPwithMicrosoftEntraID(preauthorized)",
     "responseSize": 207,
     "controlName": "btnSearch",
     "propertyName": "OnSelect",
     "nodeId": 26,
     "formulaData": {
     "script": "UpdateContext({locSearchPerformed: false});\r\n\r\n// Construct the request body JSON\r\nSet(varRequestBody, \"{\r\n \"\"requests\"\": [\r\n {\r\n \"\"entityTypes\"\": [\r\n \"\"driveItem\"\"\r\n ],\r\n \"\"query\"\": {\r\n \"\"queryString\"\": \"\"title:\\\"\"\"& txtSearchbox.Text &\"\\\"\" AND isDocument=false path:\\\"\"https://xxxx.sharepoint.com/sites/xxxx/Shared%20Documents/General/xxxx/xxxx\\\"\" OR path:\\\"\"https://xxxx.sharepoint.com/sites/xxxx/Shared%20Documents/General/xxxx/xxxx\\\"\" OR path:\\\"\"https://xxxx.sharepoint.com/sites/xxxx/Shared%20Documents/General/xxxx/xxxx\\\"\" OR path:\\\"\"https://xxxx.sharepoint.com/sites/xxxx/Shared%20Documents/General/xxxx/xxxx\\\"\" OR path:\\\"\"https://xxxx.sharepoint.com/sites/xxxx/Shared%20Documents/General/xxxx/xxxx\\\"\" OR path:\\\"\"https://xxxx.sharepoint.com/sites/xxxx/Shared%20Documents/General/xxxx/xxxx\\\"\" OR path:\\\"\"https://xxxx.sharepoint.com/sites/xxxx/Shared%20Documents/General/xxxx/xxxx\\\"\"\"\"\r\n },\r\n \"\"fields\"\": [\r\n \"\"title\"\",\r\n \"\"url\"\"\r\n ]\r\n }\r\n ]\r\n}\");\r\n\r\n// Use HTTP with Microsoft Entra ID (preauthorized) connector\r\nSet(searchResults, 'HTTPwithMicrosoftEntraID(preauthorized)'.InvokeHttp(\r\n \"POST\",\r\n \"https://graph.microsoft.com/v1.0/search/query\",\r\n {\r\n headers: Table(\r\n {key: \"Content-Type\", value: \"application/json\"}\r\n ),\r\n body: varRequestBody\r\n }\r\n));\r\n\r\nUpdateContext({locSearchPerformed: true});\r\n",
     "spanStart": 1353,
     "spanEnd": 1619
     },
     "data": {
     "context": {
     "entityName": "btnSearch",
     "propertyName": "OnSelect",
     "id": 11501,
     "nodeId": 26,
     "diagnosticContext": {
     "span": {
     "start": 1353,
     "end": 1619
     },
     "dataOperation": {
     "protocol": "rest",
     "operation": "InvokeHttp",
     "dataSource": "HTTPwithMicrosoftEntraID(preauthorized)"
     },
     "formula": "UpdateContext({locSearchPerformed: false});\r\n\r\n// Construct the request body JSON\r\nSet(varRequestBody, \"{\r\n \"\"requests\"\": [\r\n {\r\n \"\"entityTypes\"\": [\r\n \"\"driveItem\"\"\r\n ],\r\n \"\"query\"\": {\r\n \"\"queryString\"\": \"\"title:\\\"\"\"& txtSearchbox.Text &\"\\\"\" AND isDocument=false path:\\\"\"https://xxxx.sharepoint.com/sites/xxxx/Shared%20Documents/General/xxxx/xxxx\\\"\" OR path:\\\"\"https://xxxx.sharepoint.com/sites/xxxx/Shared%20Documents/General/xxxx/xxxx\\\"\" OR path:\\\"\"https://xxxx.sharepoint.com/sites/xxxx/Shared%20Documents/General/xxxx/xxxx\\\"\" OR path:\\\"\"https://xxxx.sharepoint.com/sites/xxxx/Shared%20Documents/General/xxxx/xxxx\\\"\" OR path:\\\"\"https://xxxx.sharepoint.com/sites/xxxx/Shared%20Documents/General/xxxx/xxxx\\\"\" OR path:\\\"\"https://xxxx.sharepoint.com/sites/xxxx/Shared%20Documents/General/xxxx/xxxx\\\"\" OR path:\\\"\"https://xxxx.sharepoint.com/sites/xxxx/Shared%20Documents/General/xxxx/xxxx\\\"\"\"\"\r\n },\r\n \"\"fields\"\": [\r\n \"\"title\"\",\r\n \"\"url\"\"\r\n ]\r\n }\r\n ]\r\n}\");\r\n\r\n// Use HTTP with Microsoft Entra ID (preauthorized) connector\r\nSet(searchResults, 'HTTPwithMicrosoftEntraID(preauthorized)'.InvokeHttp(\r\n \"POST\",\r\n \"https://graph.microsoft.com/v1.0/search/query\",\r\n {\r\n headers: Table(\r\n {key: \"Content-Type\", value: \"application/json\"}\r\n ),\r\n body: varRequestBody\r\n }\r\n));\r\n\r\nUpdateContext({locSearchPerformed: true});\r\n"
     }
     },
     "request": {
     "url": "https://uk-001.azure-apim.net/apim/webcontents/xxxx/codeless/InvokeHttp",
     "method": "POST",
     "headers": {
     "x-ms-user-agent": "PowerApps/3.24051.23 (Web AuthoringTool; AppName=xxxx)",
     "x-ms-client-session-id": "xxxx",
     "x-ms-client-request-id": "xxxx",
     "x-ms-client-environment-id": "/providers/Microsoft.PowerApps/environments/xxxx",
     "x-ms-client-app-id": "/providers/Microsoft.PowerApps/apps/xxxx",
     "x-ms-client-tenant-id": "xxxx",
     "x-ms-client-object-id": "xxxx",
     "Accept-Language": "en-GB",
     "Accept": "*/*",
     "Cache-Control": "no-cache, no-store",
     "Content-Type": "application/json",
     "x-ms-request-method": "POST",
     "x-ms-request-url": "/apim/webcontents/xxxx/codeless/InvokeHttp"
     },
     "body": {
     "method": "POST",
     "url": "https://graph.microsoft.com/v1.0/search/query",
     "headers": {
     "Content-Type": "application/json"
     },
     "body": null
     }
     },
     "response": {
     "duration": 70.29,
     "size": 207,
     "status": 400,
     "headers": {
     "Cache-Control": "no-store, no-cache",
     "client-request-id": "xxxx",
     "content-encoding": "gzip",
     "Content-Type": "application/json",
     "Date": "Tue, 21 May 2024 23:41:01 GMT",
     "Request-Id": "xxxx",
     "strict-transport-security": "max-age=31536000",
     "timing-allow-origin": "*",
     "x-ms-ags-diagnostic": {
     "ServerInfo": {
     "DataCenter": "UK South",
     "Slice": "E",
     "Ring": 5,
     "ScaleUnit": "003",
     "RoleInstance": "xxxx"
     }
     },
     "x-ms-apihub-cached-response": true,
     "x-ms-apihub-obo": true,
     "x-ms-environment-id": "xxxx",
     "x-ms-client-request-id": "xxxx"
     },
     "body": {
     "error": {
     "code": "BadRequest",
     "message": "The call failed, please try again.",
     "target": ""
     },
     "Instrumentation": {
     "TraceId": "xxxx"
     }
     },
     "responseType": "text"
     },
     "startTime": 5365934.9,
     "name": "https://uk-001.azure-apim.net/invoke",
     "fetchStart": 5365935.1,
     "domainLookupStart": 5365935.1,
     "domainLookupEnd": 5365935.1,
     "connectStart": 5365935.1,
     "connectEnd": 5365935.1,
     "secureConnectionStart": 5365935.1,
     "requestStart": 5365936.1,
     "responseStart": 5366002.8,
     "responseEnd": 5366003.7,
     "transferSize": 470,
     "nextHopProtocol": "h2"
     }
    }
  • Omainesi Profile Picture
    92 on at
    Re: HTTP with Microsoft Entra ID (preauthorized) connector issue

    Thanks for taking the time to reply. 

    I've now tried amending the JSON to remove those line feeds and carriage returns (good catch by the way). Unfortunately, it has not solved the problem, but certainly may have been 1 of multiple problems, so I appreciate it!

     

    I'm including the updated code for reference:

    UpdateContext({searchPerformed: false});
    
    // Construct the request body JSON
    Set(varRequestBody, "{
     ""requests"": [
     {
     ""entityTypes"": [
     ""driveItem""
     ],
     ""query"": {
     ""queryString"": ""title:\"""& txtSearchbox.Text &"\"" AND isDocument=false path:\""https://xxxx.sharepoint.com/sites/xxxx/Shared%20Documents/General/xxxx/xxxx\"" OR path:\""https://xxxx.sharepoint.com/sites/xxxx/Shared%20Documents/General/xxxx/xxxx\"" OR path:\""https://xxxx.sharepoint.com/sites/xxxx/Shared%20Documents/General/xxxx/xxxx\"" OR path:\""https://xxxx.sharepoint.com/sites/xxxx/Shared%20Documents/General/xxxx/xxxx\"" OR path:\""https://xxxx.sharepoint.com/sites/xxxx/Shared%20Documents/General/xxxx/xxxx\"" OR path:\""https://xxxx.sharepoint.com/sites/xxxx/Shared%20Documents/General/xxxx/xxxx\"" OR path:\""https://xxxx.sharepoint.com/sites/xxxx/Shared%20Documents/General/xxxx/xxxx\""""
     },
     ""fields"": [
     ""title"",
     ""url""
     ]
     }
     ]
    }");
    
    // Use HTTP with Microsoft Entra ID (preauthorized) connector
    Set(searchResults, 'HTTPwithMicrosoftEntraID(preauthorized)'.InvokeHttp(
     "POST",
     "https://graph.microsoft.com/v1.0/search/query",
     {
     headers: Table(
     {key: "Content-type", value: "application/json"}
     ),
     body: varRequestBody
     }
    ));
    
    UpdateContext({searchPerformed: true});


    Also including the error in case it helps:
    Screenshot 2024-05-21 002323.png

     

  • iAm_ManCat Profile Picture
    18,206 Most Valuable Professional on at
    Re: HTTP with Microsoft Entra ID (preauthorized) connector issue

    Honestly I'm not sure this is it, but it looks like you've included a few line feeds / carriage returns into the querystring text - graph didn't like when I separated things with line feed / carriage return when using graph explorer

     

    Can't see it under default font size as it looks like they are all just wrapping due to length:

    image.png

     

    But substituting the linefeeds and carriage returns makes it more visible:

    image.png

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

🌸 Community Spring Festival 2025 Challenge 🌸

WIN Power Platform Community Conference 2025 tickets!

Markus Franz – Community Spotlight

We are honored to recognize Markus Franz as our April 2025 Community…

Kudos to the March Top 10 Community Stars!

Thanks for all your good work in the Community!

Leaderboard

#1
WarrenBelz Profile Picture

WarrenBelz 146,653 Most Valuable Professional

#2
RandyHayes Profile Picture

RandyHayes 76,287 Super User 2024 Season 1

#3
Pstork1 Profile Picture

Pstork1 65,999 Most Valuable Professional

Leaderboard