The Hue bridge can be accessed locally or remotely. The same API calls are valid for both (mostly) and this library can operate both against local and remote versions of the Hue Bridge API.
For details on setting up and connecting to the Remote Hue API
consult the remote setup docs.
OAuthTokens
is an Object that stores the tokens and expiry times of the related tokens. Various functions will return
an instance of this Object, like getTokens()
and refreshTokens()
.
The object has the following properties and functons:
refreshToken
:get
property that is the value of the refresh tokenrefreshTokenExpiresAt
:get
property that is the Unix Epoc time that the refresh token will expireaccessToken
:get
property that is the value of the access tokenaccessTokenExpiresAt
:get
property that is the Unix Epoc time that the access token will expiretoString()
:function
that will return theString
representation of theOAuthTokens
The getToken()
function allows you to exchange a code
for a set of OAuth tokens for access
and refresh
activities
on the Hue Remote API
.
code
is the authentication code that you received via theCallback URL
from yourHue Remote Application
.
api.remote.getToken('magic code value')
.then(tokens => {
// Display the tokens
console.log(JSON.stringify(tokens, null, 2));
});
The function will resolve to an OAuthTokens
object containing the details of the new tokens.
{
"accessToken": "AYZXfqbJXzSXetwcg9HS7V3ZmyAA",
"access_expires_at": 1568298222137,
"refreshToken": "NeeoF9HkPS50xAUJX8R8q2kMxUOGBGsb",
"refresh_expires_at": 1577370222137
}
access
is the OAuth Access Token that can be used to access theRemote Hue API
access_expires_at
is the Unix Epoch time that the token will expire on, attempting to use the token after this time will result in failurerefresh
is the OAuth Refresh Token that can be exchanged for new Access and Refresh tokensrefresh_expires_at
is the Unix Epoch time that the refesh token will expire on, attempting to use the token after this time will result in failure
The refreshTokens(refreshToken)
function will exchange the refreshToken
for a new set of OAuth tokens.
api.remote.refreshTokens()
.then(tokens => {
// Display the refreshed tokens
console.log(JSON.stringify(tokens, null, 2));
});
The function will resolve to an OAuthTokens
object containing the details of the refreshed tokens.
Note: calling this function with a valid refresh token will expire the old tokens, so make sure you store the new tokens for future use. The new tokens are used immediately for all future remote API calls.
The createRemoteUser(remoteBridgeId, deviceType)
function will create a new remote user in the Hue Remote API
.
remoteBridgeId
: the integer id of the remote bridge. Unless you have multiple Hue Bridges registered in the portal, then this should be0
. THis is an optional parameter, it will default to0
id not specified.deviceType
: the name of the application/device that the user represents. This is used to visualize the user access to the end user in the portal. This is an optional parameter.
api.remote.createRemoteUser()
.then(username => {
console.log(`Created a remote user: ${username}`);
});
The call will resolve to the remote username
for the user that was created.
Note: remote users are not the same as the local users that are stored inside the Hue bridge.
The getRemoteAccessCredentials()
function allows you to retrieve all the remote related authentication data that
the API knows about in an Object
.
const credentials = api.remote.getRemoteAccessCredentials();
// Display the credentials
console.log(JSON.stringify(credentials, null, 2));
The function will return an Object
with the following properties:
clientId
clientSecret
username
tokens
:access
andrefresh
Objects with propertiesvalue
andexpiresAt
The token expiresAt
properties are the Unix epoch time values, that is millseconds since the Unix epoch and an be
trivially converted into a Date object using new Date(value)
.
An example credentials object:
{
clientId: 'FSzJeGkrC6hJzPlDjC9bfxEMAQxXOvAY',
clientSecret: 'YPI9z67Qh9Fjjh59',
username: 'WkdWmGYI5tYVoy36ImLuLwXBwPoqxgakRnj5S0jL',
tokens: {
access: {
value: 'AYZXfqbJXzSXetwcg9HS7V3ZmyAA',
expiresAt: '1568298222137'
},
refresh: {
value: 'NeeoF9HkPS50xAUJX8R8q2kMxUOGBGsb',
expiresAt: '1577370222137'
}
}
}