Выпуск: Firebase Auth + Fastapi Token Проверка не сбои.Javascript

Форум по Javascript
Ответить
Anonymous
 Выпуск: Firebase Auth + Fastapi Token Проверка не сбои.

Сообщение Anonymous »

Контекст:
Я строю пользовательную аутентификацию с аутентификацией Firebase (вход Google) на Frontend (HTML, CSS, JS) и используя бэкэнд FastApi для проверки токенов. /> в стороне Fastapi
main.py

Код: Выделить всё

app = FastAPI()

app.add_middleware(
CORSMiddleware,
allow_origins=["http://localhost:8080"],  # your frontend origin
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],)

@app.middleware("http")
async def add_custom_headers(request: Request, call_next):
response: Response = await call_next(request)
response.headers["Cross-Origin-Opener-Policy"] = "same-origin"
#response.headers["Cross-Origin-Embedder-Policy"] = "require-corp"
response.headers["Cross-Origin-Resource-Policy"] = "cross-origin"
return response

app.include_router(api_router)
app.mount("/static", StaticFiles(directory="static"), name="static")
< /code>
in auth_router.py < /p>
router = APIRouter()
security=HTTPBearer()

# init firebase
cred = credentials.Certificate('/workspace/draftflow-b7b11-firebase-adminsdk-fbsvc-77f9fcd8a6.json')
firebase_admin.initialize_app(cred)

@router.get("/verify-token")
def verify_token(credentials: HTTPAuthorizationCredentials = Depends(security)):
try:
# decode and verify the token
decoded_token = auth.verify_id_token(credentials.credentials)
uid = decoded_token.get("uid")
email = decoded_token.get("email")
name = decoded_token.get("name")
return {
"status": "success",
"uid": uid,
"email": email,
"name": name
}
except Exception as e:
print("Token verification failed:", e)
raise HTTPException(status_code=401, detail="Invalid token")

< /code>
На передней стороне
in auth.html Я использую firebaseauth.js < /p>
    // firebase config is initialized
const app = initializeApp(firebaseConfig);
const auth = getAuth(app);
auth.languageCode = "en";
const db = getFirestore(app);
const googleProvider = new GoogleAuthProvider();

function handleRedirectResult(){
getRedirectResult(auth)
.then(async (result) => {
// If no result (user canceled sign-in), exit early
if (!result) {
console.log("No redirect result.");
return;
}

const credential = GoogleAuthProvider.credentialFromResult(result);
const token = credential.accessToken;
const user = result.user;
const idToken = await user.getIdToken();
localStorage.setItem("jwtID", idToken);
window.location.href = "/home";

})
.catch((error)=>{
console.log('Error handnling reidrect result: ', error);
})
}

function signInWithGoogle() {
signInWithRedirect(auth, googleProvider)
.catch((error) => {
console.error('Error during sign in:', error);
//handleAuthError(error);
});
}
// ✅ Google Sign-in Button Listener
document.addEventListener('DOMContentLoaded', ()=>{
handleRedirectResult();
const googleBtn = document.getElementById("googleLoginBtn");
if (googleBtn) {
googleBtn.addEventListener("click", signInWithGoogle);
}
});

в маршрутизаторе/ init .py
app.include_router(auth_router, prefix="/auth", tags=["Authentication"])
< /code>
❌ Проблема: < /p>
Firebase Перенаправление на страницу Google Signin, когда я регистрируюсь, используя мой Google Aoount It Redirect на одну и ту же страницу Auth. FASTAPI + Firebase Admin SDK
Я пробовал различные методы решения, но ничего не сработало.

Подробнее здесь: https://stackoverflow.com/questions/796 ... er-sign-in
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»