Created 09-06-2016 08:01 PM
we are very new to NIFI and working on 1st project - we have a requirement where we need to connect to API using -
Request an access token by sending your Client ID and Client Secret via HTTP Basic Authentication, using an HTTP POST request. The Client ID and Client Secret need to be encoded to Base64, using the UTF-8 character set, in the form of client_id:client_secret. A resource you can use for this purpose is https://www.base64encode.org/. This string is then passed as the Authorization header.
Please guide on how to proceed with this flow
We are searching this Community and found many good learning .
Any pointer will be really appreciated.
Created on 09-07-2016 01:08 PM - edited 08-19-2019 01:28 AM
Hi,
Using the InvokeHTTP processor you just have to put your client_id in basic authentication username property and your client_secret in basic authentication password property. Everything else will be taken care of by the processor regarding the basic authentication.
Beside these properties, you have to give the API URL to request and you should be good to go. The content of the response to your request will be inside the flow files at the output of this processor.
Created 09-07-2016 03:40 PM
@Pierre Villard i did try this using the below flow and added at the last put file but still struggling with the flow
Created 09-07-2016 03:50 PM
Did you start the processors? on your screenshot, all the processors are stopped.
Created on 09-07-2016 04:00 PM - edited 08-19-2019 01:28 AM
I did this and see the task and time is increasing but no change in bytes.
I used POST method because I saw the following . Does any property on header needs to be set
Request an access token by sending your Client ID and Client Secret via HTTP Basic Authentication, using an HTTP POST request
Created 09-07-2016 04:03 PM
Please add a GenerateFlowFile processor before InvokeHttp processor, and connect GFF to InvokeHttp. You need to have flow files generated going into InvokeHttp processor to have requests performed against your API.
You are correct for the method if your API asks for a POST method.
Created on 09-07-2016 05:23 PM - edited 08-19-2019 01:28 AM
@pierre Villard
I did added the generate flow file and did see that stats are updating - till split jason processor. after that there was no change in processor. I am not able to debug the issue . can you suggest how to debug. What best practices we should follow to do error handling
Created 09-08-2016 03:08 AM
@ pierre Villard - Hi- I went thru your article posted in below link -
https://pierrevillard.com/2016/04/12/oauth-1-0a-with-apache-nifi-twitter-api-example/
In our API guide , I found that API uses use the OAuth 2.0 standard to authenticate all requests
The APIs are all accessed via REST invocations and return results in JSON format. The API use the OAuth 2.0 standard to authenticate all requests To authenticate to the API endpoint, we will need a token we send with every API call. To retrieve a token please follow the steps below- Request an access token by sending your Client ID and Client Secret via HTTP Basic Authentication, using an HTTP POST request. The Client ID and Client Secret need to be encoded to Base64, using the UTF-8 character set, in the form of client_id:client_secret. A resource you can use for this purpose is https://www.base64encode.org/.
This string is then passed as the Authorization header. The API will respond with an access token Note: Tokens are only valid for one hour. After one hour a new token is required. Pass the token as the Authorization header to access the API resources: API resource data is returned:
I assume there were some more steps needed in between which is missing to make the correct flow.
Can you please guide
Created on 09-07-2016 03:25 PM - edited 08-19-2019 01:28 AM
@pierre Villard
thanks for your reply . I made the below flow
above for split jason and then use the below for evaluate jason path
after running i am not able to see any progress .
Created 09-07-2016 03:34 PM
With your current flow, you need to generate some flow files to initiate the flow. For this purpose you can use GenerateFlowFile with 0B of data and with a custom scheduling strategy to request your API every X seconds/minutes/hours, etc... And you connect it to InvokeHttp processor.