0

我正在使用Authlib 博客中的这篇博文将 google oauth 添加到 FastAPI 应用程序我来自伊朗,当我的 VPN 开启时一切正常,但是当它关​​闭并且我尝试使用伊朗 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,我看到命令行中打印了令牌。我什至在这里手动解析了令牌,它很好,它有用户的数据。

当用户拥有伊朗 IP 时,为什么 Authlib 无法解析令牌?是因为谷歌不允许伊朗人使用大部分服务的制裁吗?以及如何更改代码以另一种方式解析令牌?

4

0 回答 0