algolia / cli

🔍 Algolia’s official CLI devtool
https://www.algolia.com/doc/tools/cli
MIT License
101 stars 26 forks source link

CLI gives 403 on MacOS when given valid credentials #150

Open larsyencken opened 4 months ago

larsyencken commented 4 months ago

Problem

On my Mac the CLI fails with 403 Invalid Application-ID or API key when doing algolia indices list, or most operations, when given correct credentials.

The credentials were verified on a comparison Linux system (Ubuntu 22.04.04 LTS amd64) with identical Algolia CLI release version and everything worked smoothly.

Params

Side notes

clemfromspace commented 3 months ago

Hello @larsyencken and thanks for your report,

In both case, are you passing the Algolia credentials to the CLI through the flags (--api-key / --application-id) or using a profile? If you are using a profile, could you check the profile file content on the MacOS system? I suspect a bug in the retro-compatibility of the profile format, since we recently changed some fields name in the profile (api_key vs admin_api_key). Thanks!

tonlam commented 2 months ago

I change admin_api_key to api_key in config.toml and it works

SvenDowideit commented 1 month ago

I'm getting the same thing from a "just brew installed algolia-cli", and from building from source here:

algolia-cli dowideit.sven$ ./algolia profile list
NAME        APPLICATION ID     NUMBER OF INDICES  DEFAULT
sandbox     8<----snip  15                 
production  8<----snip         62                 âś“
algolia-cli dowideit.sven$ ./algolia indices list
Algolia API error [403] Invalid Application-ID or API key

my ~/.config/algolia/config.toml file only has api_key entries, and adding an admin_api_key value doesn't help either

is there something I can do quickly to debug, or should I start reading the code?

I do get the same issue when I use the two cli params, and the same values work fine for some go code i've been using for other purposes.

SvenDowideit commented 4 weeks ago

I started debugging this, and may be running into a combination of an env var being set, and that error not telling me enough to realise it ...

func (p *Profile) GetAPIKey() (string, error) {
    if os.Getenv("ALGOLIA_API_KEY") != "" {
        return os.Getenv("ALGOLIA_API_KEY"), nil
    }

mmm, I didn't realise / know that the API key in the config file was being over-ridden from the env, and thus didn't realise the env vars were pointing to a different Algolia env, and so the config defaul env was then using the other env's API key...

ideally, the error message should be able to give some hints to the Algolia env and Key that is failing - I'll keep looking at the code tho :)

(commenting out the env var bits helps it work for me)

or perhaps just having a verbose mode that tells the user that the env var value is over-riding the value in the config?