Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
6 years ago
Solved

How to get data from rest API with authentication token which expires in 30 mins?

I have a rest API which when credentials are passed, a token is generated which expired in 30 mins.  i have to pass this token to another link to get the required data. How can i do all this inside...
  • Anonymous's avatar
    Anonymous
    6 years ago

    i have the solution.

    as every API might be different in context to headers passed, ill share what worked for me.

     

    let
    url = "https://api.abc.com/oauth2/token", //example for link
    body = "{ ""client_id"": ""123abc123"", ""client_secret"": ""fgfgfdsefc""}", //123abc123 is client_id and fgfgfdsefc is client_secret
    Parsed_JSON = Json.Document(body),
    BuildQueryString = Uri.BuildQueryString(Parsed_JSON),
    polichu = Json.Document(Web.Contents(url,[Headers = [#"Content-Type"="application/x-www-form-urlencoded"], Content = Text.ToBinary(BuildQueryString) ] )),
    token = List.First( Record.FieldValues(polichu)), //this gave me a list of 3 records having token and other things so i had to take the first one which was token
    bearer = "bearer ",
    access_token = bearer & token, //combining it to text so the key is actually "bearer jsofsojdf" (something like this)

    Source = Json.Document(Web.Contents("https://api.abc.com/devices/entities/devices/v1?ids=123123123", [Headers=[Authorization=access_token, Accept="application/json"]])),
    resources = Source[resources],
    resources1 = resources{0},
    #"Converted to Table1" = Record.ToTable(resources1),
    #"Transposed Table" = Table.Transpose(#"Converted to Table1"),
    #"Promoted Headers" = Table.PromoteHeaders(#"Transposed Table", [PromoteAllScalars=true]),
    #"Expanded meta" = Table.ExpandRecordColumn(#"Promoted Headers", "meta", {"version"}, {"meta.version"})
    in
    #"Expanded meta"

    as i have attached my api working in Postman, this is a bearer token and using client id and secret - token was generated and using this token alone, i had to push it into another link to get the data. and this is how it works. 

     

    hope this works out to everybody if requirement matches.