Authlib: json.decoder.JSONDecodeError: Ожидаемое значение: строка 1 столбец 1 (символ 0)

#python-3.x #google-authentication #fastapi #authlib

#python-3.x #google-аутентификация #fastapi #authlib

Вопрос:

Я использую это сообщение в блоге из блога Authlib, чтобы добавить google oauth в приложение FastAPI. Я из Ирана, и все работает нормально, когда мой VPN включен, но когда он выключен, и я пытаюсь войти в приложение с помощью Google с иранским IP, Authlib не может проанализировать id_token и отображает следующую ошибку:

json.decoder.JSONDecodeError: Ожидаемое значение: строка 1 столбец 1 (символ 0)

Вот код, который я использую:

 app = FastAPI()
app.add_middleware(SessionMiddleware, secret_key="secret-string")

config = Config('/usr/src/app/google-auth.env')
oauth = OAuth(config)
oauth.register(
    name='google',
    server_metadata_url='https://accounts.google.com/.well-known/openid-configuration',
    client_kwargs={
        'scope': 'openid email profile'
    }
)

@app.route('/login')
async def login(request: Request):
    redirect_uri = request.url_for('auth') # absolute url for callback
    return await oauth.google.authorize_redirect(request, redirect_uri)


@app.route('/auth')
async def auth(request: Request):
    token = await oauth.google.authorize_access_token(request)
    print(token)
    user = await oauth.google.parse_id_token(request, token)
    return RedirectResponse(url='/')
 

Ошибка возникает в строке oauth.google.parse_id_token , и я вижу токен, напечатанный в командной строке. Я даже проанализировал токен здесь вручную, и все в порядке, и в нем есть данные пользователя.

Почему Authlib не может проанализировать токен, когда у пользователя есть иранский IP? Это из-за санкций Google не позволяет иранцам пользоваться большинством сервисов? И как я могу изменить код, чтобы проанализировать токен другим способом?

Комментарии:

1. Что вы имеете в виду «когда у пользователя есть иранский IP»? Конечный пользователь или разработчик? Если ваш сервер (на котором выполняется код) имеет доступ к Google, он будет хорошо анализировать токен id.

2. @lepture я имею в виду конечного пользователя. Но, как я вижу сейчас, конечный пользователь имеет доступ к Google и может видеть страницу аутентификации Google, но возникает ошибка, о которой я упоминал. Я надеюсь найти способ parse_id_token по-другому, не используя эту функцию.