Metadata-Version: 2.1
Name: cotter
Version: 0.0.4
Summary: Cotter Login SDK for python scripts
Home-page: https://github.com/cotterapp/python-sdk
Author: Cotter
Author-email: putri@cotter.app
License: UNKNOWN
Description: # Cotter Login SDK for Python CLI
        
        Cotter's Python SDK for Passwordless Authentication using Email/Phone Number for your CLI and scripts.
        To read more about Cotter, get started with our 📚 integration guides and example projects.
        
        **Find the most updated documentation on our site or our Github:**
        
        - [Documentation](https://docs.cotter.app/sdk-reference/python-for-cli)
        - [Github](https://github.com/cotterapp/python-sdk)
        
        # Installation
        
        ```
        pip install cotter
        ```
        
        Find the latest versions here https://pypi.org/project/cotter/
        
        # Usage
        
        Get your `API_KEY_ID` from [Cotter's Dashboard](https://dev.cotter.app).
        
        ### Step 1: Copy [`cotter_login_success.html`](https://github.com/cotterapp/python-sdk/blob/master/example/cotter_login_success.html) from the `example` folder.
        
        You can make your own Success page. After the user successfully logged-in, the website will redirect to `http://localhost:port` and you should show a "Success message" and tell the user to go back to your terminal. Feel free to copy our example page and modify it.
        
        **Put the success page with name `cotter_login_success.html` at the same directory as where you put the code below**
        
        ### Step 2: Call Cotter's login function
        
        ```python
        import cotter
        api_key = "YOUR API KEY ID"
        port = 8080 # Open a port to receive code from the website after successful authentication
        response = cotter.login_with_email_link(api_key, port)
        print(response)
        ```
        
        # Available methods:
        
        ### Using Email
        
        ```python
        # Use Magic Link
        response = login_with_email_link(api_key, port)
        # Use OTP
        response = login_with_email_otp(api_key, port)
        ```
        
        ### Using Phone Number
        
        ```python
        # Use Magic Link
        response = login_with_phone_link(api_key, port)
        # Use OTP
        response = login_with_phone_otp(api_key, port)
        ```
        
        # Storing the tokens 
        
        ### Store the tokens to a file:
        ```python
        from cotter import tokenhandler
        tokenhandler.store_token_to_file(response["oauth_token"], "cottertoken.json")
        ```
        ### Get the tokens to a file (automatically refresh if needed):
        ```python
        from cotter import tokenhandler
        oauth_token = tokenhandler.get_token_from_file("cottertoken.json", api_key)
        ```
        
        # Refreshing tokens (if not using the functions above)
        ```python
        # This will only refresh if needed
        from cotter import tokenhandler
        oauth_token = tokenhandler.refresh_token(oauth_token, api_key)
        ```
        
        # Validating tokens
        ```python
        from cotter import validate
        access_token_decoded = validate.validate_access_token(response["oauth_token"]["access_token"], api_key)
        id_token_decoded = validate.validate_id_token(response["oauth_token"]["id_token"], api_key)
        ```
        
        # Troubleshooting
        
        ### Allowed Origin Error
        
        If you get an error like this:
        
        ```javascript
        {
          "msg": "The redirect URL http://localhost:1234 or the parent origin :// is not in the list of allowed URLs. Please contact the site owner.",
          "type": ""
        }
        ```
        
        You may have set up a list of Allowed URLs in the dashboard. Make sure you add these 2 urls:
        
        - `http://localhost:<PORT>` based on the port you used above
        - `://` (this is a bug, join our [Slack channel](https://join.slack.com/t/askcotter/shared_invite/zt-dxzf311g-5Mp3~odZNB2DwYaxIJ1dJA) to be updated)
        
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Description-Content-Type: text/markdown
