GithubHelp home page GithubHelp logo

Comments (2)

colin-nolan avatar colin-nolan commented on August 20, 2024

A hacky workaround is to put a "fake" xdg-open on the path and use it to gain the details required to complete the flow.

For example, in a new directory bin, create the file xdg-open with content:

#!/usr/bin/env bash

set -euf -o pipefail

curl -Ls -o /dev/null -w %{url_effective} "$1" > /tmp/smartthings-login

Make the file executable and add it to the path:

$ chmod +x bin/xdg-open
$ export PATH="${PATH}:${PWD}/bin"

Start the login flow (will not fail because it calls the fake xdg-open and waits for auth flow to complete):

$ ./smartthings apps
logging in... ⣻

In a different terminal (e.g. tmux; another SSH session), read the link to open in the file that was written:

$ cat /tmp/smartthings-login
https://account.smartthings.com/login?redirect=...

Copy and paste the URL into your browser and compelete the flow. The final page will redirect to a localhost address that your browser won't open correctly (because it's not on the localhost of the browser at that point). Copy the URL (contains the auth code) and feed it back via the same terminal you read the tmp file in:

$ curl 'http://localhost:61973/finish?code=YOURCODE'
<html><body><h1>You can close the window.</h1></body></html>

Success:

$ ./smartthings apps
logging in... done
...
$ cat ~/.config/@smartthings/cli/credentials.json
{
    "default": {
        "accessToken": ...  
        ...
     }
}

from smartthings-cli.

rossiam avatar rossiam commented on August 20, 2024

The default login flow isn't intended for use on a headless machine. We recommend using a PAT for this situation.

https://github.com/SmartThingsCommunity/smartthings-cli#authentication

from smartthings-cli.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.