Using credentials provided by an environment variable

Retrieving the credentials

Use the following snippet to obtain general credentials for your account:

#!/usr/bin/env python
from craft_store import StoreClient, endpoints

store_client = StoreClient(
    base_url="https://dashboard.snapcraft.io",
    endpoints=endpoints.SNAP_STORE,
    user_agent="Craft Store Tutorial Agent",
    application_name="cart-store-tutorial"
)

store_client.login(
    permissions=["package_access"],
    description="tutorial-client-login",
    ttl=1000
)

print(f"Exported credentials: {credentials}")

Note

The craft_store.store_client.StoreClient.login() method has some extra parameters such as packages and channels to restrict the credentials reach even further. Also take consideration into further locking down permissions (craft_store.attenuations).

Using retrieved credentials

If craft_store.store_client.StoreClient is initialized with environment_auth and the value is set then a in-memory keyring is used instead of the system keyring.

To make use of such thing, export CREDENTIALS=<credentials> where <credentials> is the recently retrieved credential. To make use of it and get information from your account:

#!/usr/bin/env python
from craft_store import StoreClient, endpoints

store_client = StoreClient(
    base_url="https://dashboard.snapcraft.io",
    endpoints=endpoints.SNAP_STORE,
    user_agent="Craft Store Tutorial Agent",
    application_name="cart-store-tutorial",
    environment_auth="CREDENTIALS",
)

whoami = store_client.whoami()

print(f"email: {whoami['account']['email']}")
print(f"id: {whoami['account']['id']}")