Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Introduction


The S3 service builds on the S2 service. In S3, we add oAuth into the equation.

If oAuth is still running from the examples section /wiki/spaces/~mike/pages/19759116, let's stop the service and start it again with the jsconf profile. In the terminal window that was running oAuth, enter the following commands:


Code Block
languagebash
titleStart oAuth service
linenumberstrue
# go to correct directory
cd /opt/soajs/node_modules/soajs.oauth

# export necessary environment variables
export SOAJS_PROFILE=/opt/soajs/node_modules/soajs.utilities/data/jsconf/profile.js
export SOAJS_ENV=test
export SOAJS_SRVIP=127.0.0.1

# start service
node .

Code Walkthrough


This page shows you how to interact with the s3 service after you install it and run it.

The code walkthrough is located in a sub page and explained in depth. Click here to learn more about how the code works


Interacting with S3 service


Service S3 builds on service S2. If you notice the config and index files are almost identical. The one main difference between S2 and S3 is that S3 makes use of oAuth. 

Let's start the oAuth service, as well as the S3 service and learn about how SOAJS uses oAuth to protect our APIs:

In a new terminal window, enter the following:


Code Block
languagebash
titleStart oAuth service
linenumberstrue
# go to correct directory
cd /opt/soajs/node_modules/soajs.jsconf/services/s3


# export necessary environment variables
export SOAJS_PROFILE=/opt/soajs/node_modules/soajs.utilities/data/jsconf/profile.js
export SOAJS_ENV=test
export SOAJS_SRVIP=127.0.0.1


# start service
node .


Let's call one of the APIs in S3:


Code Block
languagebash
linenumberstrue
curl -X GET -H "key: 4f9b4dbc4c8178a3983b8c0d42cd42d30e63f910ac5e4e51843b542c34d1f6790eda4c8b425470cb71ad6eed58787f59d1b9d8abd9cb43ddc1086641779752348c436a5e6d79c74b2aa59feaf4ecf1db868c7f77383d33b30208c8e31729b857" "http://test-api.mydomain.com/jsconf3/hello?email=team@soajs.org"



Code Block
languagejs
titleResponse
linenumberstrue
{"result":false,"errors":{"codes":[135],"details":[{"code":135,"message":"Error occurred while redirecting your request to the service"}]}}


If we look at the terminal window where S3 is turned on, we can see the following error:


Code Block
languagebash
(/opt/soajs/node_modules/soajs/servers/service.js:672 in logErrors): The access token was not found


This is expected as we have not provided the correct access token in our request, so the framework blocks access to the API.

Let's see how we can generate an access code and use it subsequently:


Code Block
languagebash
linenumberstrue
curl -X POST -H "key: 4f9b4dbc4c8178a3983b8c0d42cd42d30e63f910ac5e4e51843b542c34d1f6790eda4c8b425470cb71ad6eed58787f59d1b9d8abd9cb43ddc1086641779752348c436a5e6d79c74b2aa59feaf4ecf1db868c7f77383d33b30208c8e31729b857" -H "Authorization: Basic NTcxMjAxMTAxZWJmMzQwNDFjMGIwNjI3Om9hdXRoc2VjcmV0" -H "Content-Type: application/x-www-form-urlencoded" -d 'username=myuser&password=password&grant_type=password' "http://test-api.mydomain.com/oauth/token"



Code Block
languagejs
titleResponse
{"token_type":"bearer","access_token":"f9525e6257e64aa3c2d90f8e57c03f4bfc86e64d","expires_in":3600,"refresh_token":"1495c6b92122edcd1105751b6d57cdb6e275062b"}


When we hit the oAuth API /oauth/token, the service responds with an access_token. If take this access token and place it in our original request, we should get a successful response:


Code Block
languagebash
curl -X GET -H "key: 4f9b4dbc4c8178a3983b8c0d42cd42d30e63f910ac5e4e51843b542c34d1f6790eda4c8b425470cb71ad6eed58787f59d1b9d8abd9cb43ddc1086641779752348c436a5e6d79c74b2aa59feaf4ecf1db868c7f77383d33b30208c8e31729b857" "http://test-api.mydomain.com/jsconf3/hello?email=team@soajs.org&access_token=f9525e6257e64aa3c2d90f8e57c03f4bfc86e64d"



Code Block
languagejs
titleResponse
{"result":true,"data":"John Doe <team@soajs.org> "}