Python ';authorize_redirect()';返回错误500:';httpx.exceptions.ConnectTimeout';

Python ';authorize_redirect()';返回错误500:';httpx.exceptions.ConnectTimeout';,python,oauth,authlib,starlette,Python,Oauth,Authlib,Starlette,我实际上正在使用Starlete框架和authlib进行GoogleOAuth身份验证的平台上工作 从今天起,我在调用oauth.google.authorize\u redirect(request,redirect\u uri)时遇到500个内部服务器错误,错误为httpx.exceptions.ConnectTimeout 我完全不知道这个新的bevahiour。 我可以使用authlib提供的demo oauth client存储库复制它: app.py是: import json f

我实际上正在使用Starlete框架和authlib进行GoogleOAuth身份验证的平台上工作

从今天起,我在调用
oauth.google.authorize\u redirect(request,redirect\u uri)
时遇到
500个内部服务器错误,错误为
httpx.exceptions.ConnectTimeout

我完全不知道这个新的bevahiour。 我可以使用
authlib
提供的
demo oauth client
存储库复制它:

app.py是:

import json
from starlette.config import Config
from starlette.applications import Starlette
from starlette.middleware.sessions import SessionMiddleware
from starlette.responses import HTMLResponse, RedirectResponse
from authlib.integrations.starlette_client import OAuth

app = Starlette(debug=True)
app.add_middleware(SessionMiddleware, secret_key="!secret")

config = Config('.env')
oauth = OAuth(config)

CONF_URL = 'https://accounts.google.com/.well-known/openid-configuration'
oauth.register(
    name='google',
    server_metadata_url=CONF_URL,
    client_kwargs={
        'scope': 'openid email profile'
    }
)


@app.route('/')
async def homepage(request):
    user = request.session.get('user')
    if user:
        data = json.dumps(user)
        html = (
            f'<pre>{data}</pre>'
            '<a href="/logout">logout</a>'
        )
        return HTMLResponse(html)
    return HTMLResponse('<a href="/login">login</a>')


@app.route('/login')
async def login(request):
    redirect_uri = request.url_for('auth')
    return await oauth.google.authorize_redirect(request, redirect_uri)


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


@app.route('/logout')
async def logout(request):
    request.session.pop('user', None)
    return RedirectResponse(url='/')


if __name__ == '__main__':
    import uvicorn
    uvicorn.run(app, host='127.0.0.1', port=8000)
对这种新行为有什么看法?我完全被它迷住了。
谢谢

不知道发生了什么事。但是你似乎被第一步挡住了,那就是从你自己尝试连接这个url获取信息,看看需要多长时间?谢谢你的回答。我真的不知道发生了什么。看来今天又干得很好了。我可以毫无问题地访问url。可能是网络太慢了,当你测试它时无法访问google。
GOOGLE_CLIENT_ID=[REDACTED]
GOOGLE_CLIENT_SECRET=[REDCATED]