Proxy error: UnprocessableEntity, Failed to get installation and oauth information for app



已于 2022年1月20日 发布

I have been guided here by Zendesk support, I am receiving the error Proxy error: {:code=>"UnprocessableEntity", :status=>"422", :title=>"Unprocessable Entity", :message=>"Failed to get installation and oauth information for app."} when I attempt to create a request to a 3rd party server, I have followed your extensive guide but still recieving the above.


2

48

48 条评论

@Ismail - I am using ZCLI.

@Will I think you are missing secure: true for the parameter in the manifest file

0


Hi I'm having a lot of problems with this too. In my manifest I have:

```

{

 "parameters": [
    {
      "name": "token",
      "type": "oauth"
    }
  ],
  "oauth": {
    "client_id": "XXX",
    "client_secret": "XXX",
    "authorize_uri": "https://XXX/oauth2/authorize",
    "access_token_uri": "https://XXX/oauth2/token",
    "scope": "email profile offline_access"
  }

}

```

and my code does

```

client.request({
  url: 'https://xxx.com/some/endpoint',
  type: 'GET',
  secure: true,
  headers: {Authorization: 'Bearer {{setting.token}}'},
})

```

The app seems to authorise fine when I go through the process but I still get this proxy error.

One detail is that I've installed the app in a zendesk sandbox to test it. Is this expected to work?

0


Very interesting 1263169209890. Are you using zat or zcli? I'm using zat and here the installationId is 0 locally.

1


I was really hoping this would work. But when I fetch client.metadata I get a uuid installationId when I run locally

So based on further testing and investigating,

when local - the value is a string

when installed - the value is a number

so we can use a typeof check to work out if we are running locally or installed.

1


For anyone having this issue. The following is working both locally and when installed:

    const metadata = await client.metadata();
  const apiUrl = metadata.settings.apiUrl;
  const settings = {
      url: 'https://' + apiUrl + '/' + path + (queryParams ? '?' + queryParams : ''),
      secure: !!metadata.installationId,
      cors: false,
      type: 'GET',
      dataType: 'json',
      contentType: 'application/json',
      headers: {
          Authorization: `Basic ${ !!metadata.installationId ? '{{setting.apiToken}}' : metadata.settings.apiToken }`,
      },
      accepts: "application/json",
  };
  return client.request(settings)
      .then(successHandler)
        .catch(handleFailure);

The `installationId` will be `0` when the app is running locally.

 

1


Thank you for your answer 1268420663450. That is very unfortunate. Do you know whether there is a way to find out whether the app is running locally? Knowing so will allow me to make an "insecure" request locally and use secure settings when it is not local.

0


Hello,

I'm experiencing this issue in a Zendesk support app where I need to use a third-party API requiring HTTP Basic authentication. The issue is so far only locally and I've not yet tried to install the app. The following is code that makes the request:

    const metadata = await client.metadata();
  const apiUrl = metadata.settings.apiUrl;
  const settings = {
      url: 'https://' + apiUrl + '/' + path + (queryParams ? '?' + queryParams : ''),
      secure: true,
      cors: false,
      type: 'GET',
      dataType: 'json',
      contentType: 'application/json',
      headers: {
          Authorization: 'Basic {{setting.apiToken}}',
      },
      accepts: "application/json",
    };

  return client.request(settings)
      .then(successHandler)
        .catch(handleFailure);

And this is how my `menifet.json` look like:

{
  "name": "...",
  "author": {
      "name": "...",
      "email": "...",
      "url": "..."
  },
  "defaultLocale": "da",
  "private": true,
  "location": {
      "support": {
          "nav_bar": "assets/index.html"
      }
  },
  "version": "0.9.12",
  "frameworkVersion": "2.0",
  "domainWhitelist": ["{{setting.apiUrl}}"],
  "parameters": [
      {
          "name": "apiUrl",
          "type": "url",
          "required": true,
          "secure": false,
          "default": "..."
      },
      {
          "name": "apiToken",
          "type": "password",
          "required": true,
          "secure": true,
          "default": "..."
      }
  ]
}
This is not a new app. I'm changing the API endpoints in an existing app.
 
Best regards,
Ismail

0


Hi Stuart,
 
If you're able to provide a link to the repo or code snippets that would be helpful for us to dig into it. It would also be greatly appreciated if you could provide context around when this error first began. Has it always been unsuccessful or have any known changes been made prior to it occurring? 
 
Looking forward to your response!
 
Best,
 
Erica

0


Hi I am receiving this error today in local dev mode I have added a secure token to my manifest like so 

 

```

"parameters": [
{
"name": "token",
"type": "text",
"secure": true
}
]

0


Hi Pham! From my research, it appears that this may have been an issue with one of our integration services that has been resolved for a few weeks. Can you confirm that you are still experiencing this problem?

0


登录再写评论。

找不到所需的内容?

新建帖子