【发布时间】:2024-04-11 03:50:02
【问题描述】:
我尝试按照本指南创建三个我需要在客户端显示不同 UI 的角色
https://firebase.google.com/docs/auth/admin/custom-claims
首先我在我的公共 void 运行中初始化 firebase,在主 .java 中
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);
然后我在我的用户控制器上使用与指南中相同的自定义用户声明 用户控制器.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);
因为它说 The method setCustomUserClaims(String, Map) is undefined for the type FirebaseAuth
如果我按照 Eclipse 的建议将 setCustomUserClaims 更改为 setCustomClaims,我会收到以下错误
FirebaseAuth 类型的方法 setCustomClaims(String, Map) 不可见
我是第一次使用 firebase,所以我不知道为什么这不起作用
【问题讨论】:
标签: java firebase firebase-authentication firebase-admin