簡體   English   中英

使用Firebase文檔的自定義用戶聲明的示例不起作用

[英]example use of custom user claims of firebase documentation doesn't work

我嘗試按照本指南創建客戶端需要的三個角色,以顯示不同的UI

https://firebase.google.com/docs/auth/admin/custom-claims

首先,我在主.java的公共void運行中初始化firebase

    FileInputStream serviceAccount = new FileInputStream("MyRoute\\serviceAccountKey.json");

    FirebaseOptions options = new FirebaseOptions.Builder()
        .setCredentials(GoogleCredentials.fromStream(serviceAccount))
        .setDatabaseUrl("https://<DATABASE_NAME>.firebaseio.com/")
        .build();

    FirebaseApp.initializeApp(options);

然后我在用戶控制器上使用自定義用戶聲明,方法與指南UserController.java中的方法相同

@RequestMapping(value = "/student", method = RequestMethod.POST)
private User createStudent(@RequestBody UserDTO userDTO) {
    //Create the new User
    User user = new User();
    user.setUserType(UserType.STUDENT);
    user.setEmail(userDTO.getEmail());
    user.setFirstName(userDTO.getFirstName());
    user.setLastName(userDTO.getLastName());
    //verify the user and create custom role
    String idToken = userDTO.getIdToken();
    Task<FirebaseToken> decoded = FirebaseAuth.getInstance().verifyIdToken(idToken);
    Map<String, Object> claims = new HashMap<>();
    claims.put("student", true);
    String uid = decoded.getUid(); 
    FirebaseAuth.getInstance().setCustomUserClaims(uid, claims);

    return userService.save(user);

首先有兩個錯誤,我無法像文檔中所述的那樣使用decoded.getUid()獲取uid,因為它迫使我使用Task而不是FirebaseToken

其次,我不能使用FirebaseAuth.getInstance().setCustomUserClaims(uid, claims); 因為它說對於類型FirebaseAuth未定義方法setCustomUserClaims(String,Map)

如果我將setCustomUserClaims更改為setCustomClaims因為日食提示我,我將收到以下錯誤:類型FirebaseAuth的setCustomClaims(String,Map)方法不可見

這是我第一次使用Firebase,所以我茫然為什么這不起作用

您正在使用舊版本的SDK。 Task API在6.0.0版本中已刪除。 在同一版本中添加了諸如setCustomUserClaims()類的阻塞方法。 如果您想繼續使用舊版本,則應執行以下操作:

ApiFuture<Void> result = FirebaseAuth.getInstance().setCustomUserClaimsAsync(uid, claims);

暫無
暫無

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

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