簡體   English   中英

我應該如何處理Firebase后端身份驗證

[英]How should I handle Firebase backend authentication

我已經使用Java,Google Web Toolkit和Google Cloud Datastore編寫了一個基本應用程序。 為了進行身份驗證,我正在使用Firebase。 當前端進行RPC調用時,它將傳遞用戶令牌,以便后端可以對其進行驗證。

我想在后端創建一個VerifyToken類,該類將接收用戶令牌,調用Firebase verifyIdToken對其進行驗證,然后返回用戶uid或0(如果尚未成功驗證用戶令牌)。 然后,接收RPC調用的類將使用uid來獲取數據並在RPC響應中將其返回。

這是當前代碼:

public class VerifyToken
{
    public String verify(String token)
    {
        String uid = "0";

        try
        {
            //Connect to Firebase
            FirebaseOptions options = new FirebaseOptions.Builder()
                      .setServiceAccount(new FileInputStream("firebaseJsonHere"))
                      .setDatabaseUrl("dbUrlHere")
                      .build();

            FirebaseApp.initializeApp(options);

            //Verify the token

            FirebaseAuth.getInstance().verifyIdToken(token)
            .addOnSuccessListener(new OnSuccessListener<FirebaseToken>() {
                @Override
                public void onSuccess(FirebaseToken decodedToken) {
                    String uid = decodedToken.getUid();
                    System.out.println("uid decoded = " + uid);
                }
            }).addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(Exception e)
                {
                    System.out.println(e.getMessage());
                }
            });         

        }catch(Exception e){
             System.out.println("Exception: " + e.getMessage());
        }

        //Return the uid or 0 if not validated
        return uid;
    }
}

請有人讓我知道如何從SuccessListener中獲取結果。 我可以看到uid已成功解碼,只是不確定如何獲取結果。

非常感謝,埃德

我想你可以做到:

public String verify(String token)
{
    String uid = "0";

    try
    {
        //Connect to Firebase
        FirebaseOptions options = new FirebaseOptions.Builder()
                .setServiceAccount(new FileInputStream("firebaseJsonHere"))
                .setDatabaseUrl("dbUrlHere")
                .build();

        FirebaseApp.initializeApp(options);

        //Verify the token

        FirebaseToken decodedToken = FirebaseAuth.getInstance().verifyIdToken(token).getResult();
        uid = decodedToken.getUid();

    }catch(Exception e){
        System.out.println("Exception: " + e.getMessage());
    }

    //Return the uid or 0 if not validated
    return uid;
}

我不是String uid = "0";忠實String uid = "0"; 不過,將其設置為null聽起來對我來說更好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM