POST
/
users
/
{handle}
/
o-auth-identities
curl --request POST \
  --url https://codecombat.com/api/users/{handle}/o-auth-identities \
  --header 'Authorization: Basic <encoded-value>' \
  --header 'Content-Type: application/json' \
  --data '{
  "provider": "<string>",
  "accessToken": "<string>",
  "code": "<string>"
}'
{
  "_id": "<string>",
  "email": "<string>",
  "name": "<string>",
  "slug": "<string>",
  "role": "<string>",
  "stats": {
    "gamesCompleted": 123,
    "concepts": {},
    "playTime": 123
  },
  "oAuthIdentities": [
    {
      "provider": "<string>",
      "id": "<string>"
    }
  ],
  "subscription": {
    "ends": "<string>",
    "active": true
  },
  "license": {
    "ends": "<string>",
    "active": true
  }
}
  1. If no access token is provided, it will use your OAuth2 token URL to exchange the given code for an access token.
  2. Then it will use the access token (given by you, or received from step 1) to look up the user on your service using the lookup URL, and expects a JSON object in response with an id property.
  3. It will then save that user id to the user in our db as a new OAuthIdentity.
url = `https://codecombat.com/api/users/${userID}/o-auth-identities`;
OAUTH_PROVIDER_ID = "xyz";
json = { provider: OAUTH_PROVIDER_ID, accessToken: "1234" };
request.post({ url, json, auth }, (err, res) => {
  console.log(res.body.oAuthIdentities); // [ { provider: 'xyx', id: 'abcd' } ]
});

In this example, we call your lookup URL (let’s say, https://oauth.provider/user?t=<%= accessToken %>) with the access token (1234). The lookup URL returns { id: 'abcd' } in this case, which we save to the user in our db.

Authorizations

Authorization
string
headerrequired

Basic authentication header of the form Basic <encoded-value>, where <encoded-value> is the base64-encoded string username:password.

Path Parameters

handle
string
required

The document's _id or slug.

Body

application/json
provider
string
required

Your OAuth Provider ID.

accessToken
string | null

Will be passed through your lookup URL to get the user ID. Required if no code.

code
string | null

Will be passed to the OAuth token endpoint to get a token. Required if no accessToken.

Response

200 - application/json
_id
string | null
email
string | null
name
string | null
slug
string | null
role
string | null

Usually either 'teacher' or 'student'

stats
object | null
oAuthIdentities
object[] | null
subscription
object | null
license
object | null