[英]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.