emmanuelsa
emmanuelsa

Reputation: 687

robin_stocks Robinhood Authentication Stopped Working

Robinhood Authentication through MFA as described here https://robin-stocks.readthedocs.io/en/latest/quickstart.html#with-mfa-entered-programmatically-from-time-based-one-time-password-totp was working until Dec 17. I have tried multiple times but unsuccessful. Is anyone experiencing a similar issue?

The error message is not very helpful.

Traceback (most recent call last):
  File "rhs.py", line 962, in f2
    rbh_ = rbh.authentication.login (username="....", password="....", mfa_code=totp)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/mycomputer/anaconda3/lib/python3.12/site-packages/robin_stocks/robinhood/authentication.py", line 198, in login
    raise Exception(data['detail'])
                    ~~~~^^^^^^^^^^
KeyError: 'detail'

I tried to print what data contains and obtained the following. (Note:  data = request_post(url, payload) within the robin_stocks/robinhood/authentication.py).

{'verification_workflow': {'id': '***5d74a-****-****-9721-cb00a6d69***', 'workflow_status': 'workflow_status_internal_pending'}}

Could it be that the 'client_id': 'c82SH0WZOsabOXGP2sxqcj34FxkvfnWRZBKlBjFS', used in the payload used for authentication (within the robin_stocks/robinhood/authentication.py file) is no longer allowed by robinhood?

    url = login_url()
    payload = {
        'client_id': 'c82SH0WZOsabOXGP2sxqcj34FxkvfnWRZBKlBjFS',                                                                                                                                                             
        'expires_in': expiresIn,
        'grant_type': 'password',
        'password': password,
        'scope': scope,
        'username': username,
        'challenge_type': challenge_type,
        'device_token': device_token
    }

Any help will be greatly appreciated.

Upvotes: 1

Views: 812

Answers (2)

emmanuelsa
emmanuelsa

Reputation: 687

Mitch Zink has proposed a solution here that works for me --> https://github.com/jmfernandes/robin_stocks/issues/521#issuecomment-2551281316

I summarize the solution as follows:

It appears there was a recent update to the Robin-Stocks library that requires manually pulling the repository instead of using the package, as the package itself has not been updated yet. To ensure you have the latest version, please follow these steps:

Check for existing Robin-Stocks submodule. If the submodule exists, pull the latest changes. Else if the submodule does not exist, clone it. Then install Robin-Stocks in editable mode.

# Adding or updating Robin-Stocks as a submodule.
if [ -d "robin_stocks" ]; then
echo "Robin-Stocks submodule already exists. Pulling latest changes."
git -C robin_stocks pull origin master
else
echo "Cloning Robin-Stocks as a submodule."
git submodule add https://github.com/jmfernandes/robin_stocks.git robin_stocks
git submodule update --init --recursive
fi

# Installing Robin-Stocks in editable mode.
pip install -e robin_stocks

This will ensure that you have the latest version of Robin-Stocks, preventing the login issues.

After that, try logging in using the MFA as described here https://robin-stocks.readthedocs.io/en/latest/quickstart.html#with-mfa-entered-programmatically-from-time-based-one-time-password-totp

import pyotp
import robin_stocks.robinhood as r
totp  = pyotp.TOTP("My2factorAppHere").now()
login = r.login('[email protected]','password', mfa_code=totp)

Upvotes: 0

griff4594
griff4594

Reputation: 502

Getting the same exact message as of yesterday on a new account I was attaching to some automated software. I have 4 accounts and all of them now get the message.

I'm currently waiting on hold with Robinhood to find out if they blocked the API.

Upvotes: 0

Related Questions