OAuth2 Login

"template": "login_oauth2"

This view can be used for devices that need OAuth2 authorization. When it's successful, it will automatically proceed to the next view.

Example

/app.json

{
  "id": "com.athom.testsuite",
  "drivers": [
    {
      "id": "my_driver",
      // ...
      "pair": [
        {
          "id": "login_oauth2",
          "template": "login_oauth2"
        },
        {
          "id": "list_devices",
          "template": "list_devices_singular",
          "navigation": {
            "next": "add_devices"
          }
        },
        {
          "id": "add_devices",
          "template": "add_devices"
        }
      ]
    },
    ...

/drivers/<driver_id>/driver.js

const Homey = require('homey');

class MyDriver extends Homey.Driver {
  async onPair(session) {
    let apiUrl =
      'https://api.myservice.com/oauth2/authorise?response_type=code&client_id=' +
      Homey.env.CLIENT_ID +
      '&redirect_uri=https://callback.athom.com/oauth2/callback/';

    let myOAuth2Callback = await this.homey.cloud.createOAuth2Callback(apiUrl);

    myOAuth2Callback
      .on('url', (url) => {
        // dend the URL to the front-end to open a popup
        session.emit('url', url);
      })
      .on('code', (code) => {
        // ... swap your code here for an access token

        // tell the front-end we're done
        session.emit('authorized');
      });
  }
}

This pair template works best with the homey-oauth2app module.

Options

Key Type Default Description
hint i18n-object ``
button i18n-object "Log-in"

When either hint or button are set to a value, a button will appear and wait for the user to click it before opening the popup.