FusionAuth / fusionauth-typescript-client

A TypeScript client for FusionAuth
https://fusionauth.io
Apache License 2.0
60 stars 27 forks source link

client.logout("refreshtokien here") dont work #79

Open IzydorDPS opened 1 year ago

IzydorDPS commented 1 year ago

i was forced to replace method above with client.logoutWithRequest(logoutRequest);witch is basicly the same so it dont change anything but its still a bug

problem: when calling client.logout(true, "refreshtokien here") i get exception that api consumes only application/json but api sends plain/text method:

image

exception:

{
  "statusCode": 400,
  "exception": {
    "fieldErrors": {},
    "generalErrors": [
      {
        "code": "[InvalidContentType]",
        "message": "Invalid [Content-Type] HTTP request header value of [text/plain]. Supported values for this request include [application/json]."
      }
    ]
  }
}
robotdan commented 1 year ago

If you omit the Content-Type request header, does it work ok?

I think the issue is in our builder, I think this was a carry over from native JavaScript where the browser doesn't want to make a POST request w/out a content type header. But I don't think we need this in TypeScript.

https://github.com/FusionAuth/fusionauth-client-builder/blob/5ec210211dac37cdb314dd0e7cd132b2165f04af/src/main/client/typescript.client.ftl#L93

impact-erik commented 1 year ago

Same issue here. I have done this

const client = new FusionAuthClient(key, url);
const clientBuilder = client.clientBuilder.build(url);
clientBuilder
      .withHeader('Content-Type', 'application/json') // this is the override
      .withUri('/api/logout')
      .withParameter('global', true)
      .withParameter('refreshToken', refreshToken)
      .withMethod('POST')
      .go()