0

Have an MS Flow trying to call the Graph API to update a user's profile photo. It takes a username and jpg photo file and then calls an HTTP connection secured using Azure AD (with https://graph.microsoft.com as the resource URI). Unfortunately, I get the error The file you chose isn't an image. Please choose a different file. which seems to indicate that I am not posting the file encoded in a way that MS Graph recognizes.

I've tried all variations I can think of with the body (using the @binary, @base64ToBinary, etc):

"body": "@{triggerBody()?['file']?['contentBytes']}"

to try to get it to treat "correctly", but with no luck.

This is the full flow definition:

{
    "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "$connections": {
            "defaultValue": {},
            "type": "Object"
        },
        "$authentication": {
            "defaultValue": {},
            "type": "SecureObject"
        }
    },
    "triggers": {
        "manual": {
            "type": "Request",
            "kind": "Button",
            "inputs": {
                "schema": {
                    "type": "object",
                    "properties": {
                        "file": {
                            "title": "Photo",
                            "type": "object",
                            "x-ms-dynamically-added": true,
                            "description": "Please select file or image",
                            "x-ms-content-hint": "FILE",
                            "properties": {
                                "name": {
                                    "type": "string"
                                },
                                "contentBytes": {
                                    "type": "string",
                                    "format": "byte"
                                }
                            }
                        },
                        "text": {
                            "title": "Username",
                            "type": "string",
                            "x-ms-dynamically-added": true,
                            "description": "user@domain.com",
                            "x-ms-content-hint": "TEXT"
                        }
                    },
                    "required": [
                        "text"
                    ]
                }
            }
        }
    },
    "actions": {
        "Invoke_an_HTTP_request": {
            "runAfter": {},
            "metadata": {
                "flowSystemMetadata": {
                    "swaggerOperationId": "InvokeHttp"
                }
            },
            "type": "ApiConnection",
            "inputs": {
                "host": {
                    "connection": {
                        "name": "@json(decodeBase64(triggerOutputs().headers['X-MS-APIM-Tokens']))['$connections']['webcontents_1']['connectionId']"
                    }
                },
                "method": "post",
                "body": {
                    "method": "PUT",
                    "url": "https://graph.microsoft.com/v1.0/users/@{triggerBody()['text']}/photo/$value",
                    "headers": {
                        "Content-Type": "image/jpeg"
                    },
                    "body": "@{triggerBody()?['file']?['contentBytes']}"
                },
                "path": "/codeless/InvokeHttp",
                "authentication": {
                    "type": "Raw",
                    "value": "@json(decodeBase64(triggerOutputs().headers['X-MS-APIM-Tokens']))['$ConnectionKey']"
                }
            }
        }
    }
}

and the full error:

{
  "error": {
    "code": 502,
    "message": "{\r\n  \"error\": {\r\n    \"code\": 502,\r\n    \"source\": \"unitedstates-002.azure-apim.net\",\r\n    \"clientRequestId\": \"e105d9f2-af13-4a5b-8fbd-c84c49cadc8f\",\r\n    \"message\": \"BadGateway\",\r\n    \"innerError\": {\r\n      \"error\": {\r\n        \"code\": \"ErrorInternalServerError\",\r\n        \"message\": \"An internal server error occurred. The operation failed., The file you chose isn't an image. Please choose a different file.\",\r\n        \"innerError\": {\r\n          \"request-id\": \"e3214f20-8592-4fb0-9d34-677322b231ae\",\r\n          \"date\": \"2019-07-30T21:42:10\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n}"
  }
}
Jeff
  • 35,755
  • 15
  • 108
  • 220

0 Answers0