You need to sign in to do that
Don't have an account?
Paul Allsopp 3
Outlook API integration using OAuth2
Hey guys/gals,
I am trying to integrate the Outlook API from MS into a calendar app I'm building in Lightning. I have tried the code below, which I wrote today, but keep getting an error back saying: Malformed JSON. If I don't use JSON and send the request directly as a POST string, I get an error back saying the grant_type parameter is missing...although clearly not.
Any thoughts?
Thanks,
Paul
I am trying to integrate the Outlook API from MS into a calendar app I'm building in Lightning. I have tried the code below, which I wrote today, but keep getting an error back saying: Malformed JSON. If I don't use JSON and send the request directly as a POST string, I get an error back saying the grant_type parameter is missing...although clearly not.
Any thoughts?
Thanks,
Paul
public Map<String, String> getAccessToken(String code) { HttpRequest req = new HttpRequest(); Http http = new Http(); HTTPResponse res; Map<String, String> access_data = new Map<String, String>(); access_data.put('grant_type', 'authorization_code'); access_data.put('client_id', APP_ID); access_data.put('client_secret', APP_PW); access_data.put('code', code); access_data.put('redirect_uri', APP_REDIRECT_URI); String request_body = (String)JSON.serialize(access_data); system.debug(request_body); req.setHeader('Content-Type', 'application/json'); req.setEndpoint(APP_TOKEN_URL); req.setMethod('POST'); req.setBody(request_body); req.setCompressed(true); try { res = http.send(req); system.debug(res.getBody()); if (res.getStatusCode() == 400) { throw new NoDataFoundException('Bad Server Request'); } } catch (Exception e) { Map<String, String> failure_response = new Map<String, String>(); failure_response.put('Response', res.getBody()); failure_response.put('Request', request_body); system.debug(e.getMessage()); return failure_response; } Map<String, String> json_data = (Map<String, String>)JSON.deserialize(res.getBody(), Map<String, String>.class); this.setSessionToken(json_data.get('access_token')); return json_data; }
Best Answer chosen by Paul Allsopp 3
Paul Allsopp 3
Solved it! req.setCompressed(true); was causing the issue, as well as a couple of other tweaks