Ошибка OAuth после установки на pythonanywhere - PullRequest
0 голосов
/ 28 августа 2018

Я разработал веб-приложение Python, используя Bottle локально, и он (в основном) работает на pythonanywhere .

Тем не менее, когда я пытаюсь аутентифицировать пользователя (который работал на моей локальной установке), я получаю следующую ошибку:

Redirect_uri mismatch: null. Visit https://dev.fitbit.com/docs/oauth2 for more information on the Fitbit Web API authorization process.

Я обновил настройки своего приложения fitbit api и трижды проверил, совпадает ли мой redirect_uri в настройке с моим приложением.

Взглянув на форумы по fitbit docs, выясняется, что это может быть проблема с кодировкой процентов где ...

https://www.fitbit.com/login?disableThirdPartyLogin=true&redirect=%2Foauth2%2Fauthorize%3Fclient_id%XXXXXXXX%26redirect_uri%3Dhttp%253A%252F%252Fexample.com%252Fcallback%26response_type%3Dcode%26scope%3Dactivity%2Bsleep%2Bweight%2Bnutrition%2Bsettings%26state%3D024

должно быть ...

https://www.fitbit.com/login?disableThirdPartyLogin=true&redirect=%2Foauth2%2Fauthorize%3Fclient_id%XXXXXXXX%26redirect_uri%3Dhttp://example.com/callback%26response_type%3Dcode%26scope%3Dactivity%2Bsleep%2Bweight%2Bnutrition%2Bsettings%26state%3D024

Перенаправление на страницу авторизации создается следующим образом ...

@app.route('/aas/<study_id>')
def hello(study_id):
    '''This is the primary request page that redirects users to the fitbit api for authorization.'''

    authorization_page = f'https://www.fitbit.com/oauth2/authorize' \
                         f'?response_type=code' \
                         f'&client_id={CLIENT_ID}' \
                         f'&redirect_uri={str(REDIRECT_URI)}' \
                         f'&scope={SCOPE}' \
                         f'&state={study_id}'    
    redirect(url=authorization_page)

Есть ли способ, которым я могу предотвратить эту кодировку, просто ВИДЕТЬ, если в этом проблема? Я предполагаю, что это делает wsgi.

Любые другие мысли / идеи с благодарностью.

1 Ответ

0 голосов
/ 28 августа 2018

Спасибо за внимание, ребята.

Оказывается, я не передавал URI в потоке предоставления кода авторизации (вторая часть рукопожатия oauth), как ...

POST https://api.fitbit.com/oauth2/token
Authorization: Basic Y2xpZW50X2lkOmNsaWVudCBzZWNyZXQ=
Content-Type: application/x-www-form-urlencoded

client_id=22942C&grant_type=authorization_code&redirect_uri=http%3A%2F%2Fexample.com/callback%2Ffitbit_auth&code=1234567890

Я до сих пор не представляю, почему это работает на моем локальном сервере, а не на pythonany, но это исправлено.

...