ฉันมีเว็บแอปพลิเคชัน Flask ซึ่งโฮสต์ใน Google Cloud Run ซึ่งโฮสต์ด้วย https://mydomain.run.app.
ตอนนี้ฉันกำลังพยายามเพิ่มการรับรองความถูกต้องของ Google เข้าไป ฉันได้สร้าง API ภายใต้ ข้อมูลรับรอง ใน GCP ฉันได้ให้ https://mydomain.run.app/authorize ใน uri การเปลี่ยนเส้นทาง แต่เมื่อฉันพยายามเข้าสู่ระบบจากแอพของฉัน มันแสดงข้อผิดพลาดในการเปลี่ยนเส้นทางไม่ตรงกัน
และข้อผิดพลาดแสดงให้ฉันเห็น http://mydomain.run.app/authorize.
ที่ไม่ตรงกันคือ https และ http
เมื่อฉันพยายามให้ http ในข้อมูลรับรอง uri มันทำให้ฉัน
การเปลี่ยนเส้นทางไม่ถูกต้อง: แอปนี้มีสถานะการเผยแพร่เป็น "กำลังผลิต" URI ต้องใช้ https:// เป็นรูปแบบ
@app.route('/login/google')
def google_login():
google = oauth.create_client('google')
redirect_uri = url_for('อนุญาต', _external=True,_scheme='https')
กลับ google.authorize_redirect (redirect_uri)
@app.route('/อนุญาต')
def อนุญาต ():
google = oauth.create_client('google')
โทเค็น = google.authorize_access_token()
resp = google.get('ข้อมูลผู้ใช้')
user_info = resp.json()
ผู้ใช้ = oauth.google.userinfo()
เซสชัน['โปรไฟล์'] = user_info
session.permanent = จริง
ส่งคืนการเปลี่ยนเส้นทาง ('/ เลือก')
จากนั้นฉันก็รู้ว่าแอปพลิเคชันของฉันส่งคำขอ http เท่านั้น ดังนั้นฉันจึงพยายามเพิ่ม _scheme='https' ใน url_for ในขณะที่เปลี่ยนเส้นทาง แต่ตอนนี้ฉันได้รับ authlib.integrations.base_client.errors.MismatchingStateError: mismatching_state: CSRF คำเตือน! รัฐไม่เท่าเทียมกันในคำขอและการตอบสนอง ข้อผิดพลาด. ฉันเปลี่ยนรหัสลับเป็นสตริงคงที่แทนตัวเลขสุ่มที่ฉันได้รับจากคำตอบอื่น แต่ยังไม่สามารถแก้ปัญหานี้ได้