If you haven't read Getting Started, we'd suggest reading that first.

Want to control your Lono with Javascript? The easiest way is probably with our Lono module on npm!

// In Node:
// npm install lono
LonoClient = require("lono").LonoClient

// Client-side javascript:
// download it from https://github.com/lono-devices/lono-api-js/blob/master/dist/index.js
LonoClient

Single User Application Example

lc = new LonoClient({

  // oauth client id, secret, and scope
  client_id: "client id",
  client_secret: "client secret",
  scope: ["write"],

  // Specify the auth token here. This is shown on the Dev Settings page
  // right under client secret for a single-user application.
  auth_token: "auth token",

  on_token: function(token) {
    console.log(token, "(token) has been emitted!");
    
    device = lc.get_device("device id")
    console.log("Turn on zone:", device.set_zone(0, true))
  }

});

On start, you'll see that your token has been emitted (on_token will fire).

Then, start issuing requests!

Multi User Application Example

lc = new LonoClient({

  // oauth client id, secret, and scope
  client_id: "Client ID",
  client_secret: "Client Secret",
  scope: ["write"],

  // this is the url the app will redirect to on a
  // successful login.
  redirect_on_success: "http://127.0.0.1:3001",

  // oauth2 callback address. This is where access token requests will
  // be sent. If you also pass in an express app, the route will be created
  // for you. Otherwise, call lc.callback(req, res) when a callback
  // hits your app. Take note that for the oauth callback to work your app has
  // to be publically accessible on the internet.
  callback_url: "/callback",
  express_app: app,

  // though these callback's aren't required, they are useful
  // for diagnostic purposes.
  on_auth_code: function(authCode) {
    console.log(authCode, "(auth code) has been emitted!");
  },

  on_token: function(token) {
    console.log(token, "(token) has been emitted!");
    
    device = lc.get_device("device id")
    console.log("Turn on zone:", device.set_zone(0, true))
  }

});

Additionally, pass lc.authorize as a route to your initial "authorization"
page.

app.get("/auth", lc.authorize);

(If you aren't using express, just pass req and res: lc.authorize(req, res);)

And then, direct your user to that route (in our case, /auth). If you've set
everything up correctly, the logged-in user will be prompted to allow access to
your app. If they click yes, both on_auth_code and on_token will fire with their
respective tokens. Then, you can start issuing requests!