Getting Started with the UserService

URLS

Getting an auth token

Request

Curl:

curl -X POST http://staging.userservice.tangentme.com/api-token-auth/ --data "username=admin&password=test"

Python:

import requests
url = 'http://staging.userservice.tangentme.com/api-token-auth/'
r=requests.post(url, data={"username":"admin","password":"test"})
r.content
Out[8]: '{"token": "d477c40272cc6132183647e67f10a90ae12e9d86"}'

Response:

{"token": "11ce1e89d7e1d23e78e5c922c0cbd24bb2457cec"}

You can use this token to make future authorized requests

Angular

Add constant to settings file:

.constant("SERVICE_BASE_URI", "http://staging.userservice.tangentme.com")

Add login to ng-service:

apiService.login = function (username, password) {
        var deferred = $q.defer();
        var url = SERVICE_BASE_URI + "/api-token-auth/";

        $http.post(url, {
                username: username, password: password
        }).success(function (response, status, headers, config) {
                if (response.token) {
                        //Store the token for further calls
                }

                deferred.resolve(response, status, headers, config);
        }).error(function (response, status, headers, config) {
                deferred.reject(response, status, headers, config);
        });

        return true; //deferred.promise;
};

Authorizing with an auth token

To identify yourself in consequent requests, set the Authorization header like below

CURL:

curl GET http://staging.userservice.tangentme.com/users/me/ -H 'Authorization: Token 11ce1e89d7e1d23e78e5c922c0cbd24bb2457cec'

Python:

import requests
headers = {
        'content-type': 'application/json',
        'Authorization':'Token d477c40272cc6132183647e67f10a90ae12e9d86'
}
requests.get('http://staging.userservice.tangentme.com/users/me/', headers=headers)

Response:

{
        "id": 5,
        "first_name": "",
        "last_name": "",
        "username": "a",
        "email": "",
        "is_staff": true,
        "profile": {
                "contact_number": "",
                "status_message": null,
                "bio": null
        },
        "authentications": [],
        "roles": []
}

Angular:

apiService.getMe = function (token) {

        var deferred = $q.defer();
        var url = SERVICE_BASE_URI + "/users/me/";

        $http.get(url, {
                headers: {'Authorization': 'Token ' + token}
        }).success(function (response, status, headers, config) {
        if (response) {
                //Handle the response
        }

        deferred.resolve(response, status, headers, config);
        }).error(function (response, status, headers, config) {
                deferred.reject(response, status, headers, config);
        });

        return true; //deferred.promise;
};

Possible Responses:

  • 200 OK

  • 401 Authorization failed:
    • Invalid Token
    • Authentication credentials were not provided.