barsikus007 / boosty

asynchronous boosty api wrapper
MIT License
33 stars 5 forks source link

Refresh token doesn't work #10

Open li7vinov-denis opened 1 month ago

li7vinov-denis commented 1 month ago
Exception has occurred: ValueError
Failed to refresh auth data: {'error_description': 'Invalid grant_type parameters', 'error': 'invalid_grant'}
KeyError: 'refresh_token'

The above exception was the direct cause of the following exception:

  File "/Users/_/Documents/Projects/py/boosty/main.py", line 22, in loginAsync
    token = await auth.refresh_auth_data(session=api.http_client, api_url=API_URL)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/_/Documents/Projects/py/boosty/main.py", line 31, in main
    asyncio.run(loginAsync())
  File "/Users/_/Documents/Projects/py/boosty/main.py", line 34, in <module>
    main()
ValueError: Failed to refresh auth data: {'error_description': 'Invalid grant_type parameters', 'error': 'invalid_grant'}

login method:

async def loginAsync():

    auth = Auth(auth_data=auth_data)

    api = API(auth=auth)

    await auth.refresh_auth_data(session=api.http_client, api_url=API_URL)

    response = await api.get_post("boosty", post_id="c9fb8a19-c45e-4602-9942-087c3af28c1b")

    print(response.title)

Do you need some additional details to figure out issue?

I tried to send request directly in Postman - received that response:

{
    "error_description": "Invalid parameters: device_os, refresh_token, device_id, grant_type",
    "error": "invalid_param"
}
barsikus007 commented 1 month ago

which auth method did you use? phone or social network one?

li7vinov-denis commented 1 month ago

I used cookie from browser. in browser I was authenticated via google account

barsikus007 commented 1 month ago

could you wait for refresh in developer tools?

  1. just login to your account in new browser and close tab and browser
  2. wait from one day to week
  3. open new tab in browser, then open dev tools > network, then open boosty.to page
  4. filter requests by api word and find refresh one
  5. remove your tokens from request and provide it here

or you can just capture same request in your own browser if you wish