0
사용자의 ID 토큰을 확인하려고합니다. 나는 verifyIdToken를 호출 할 때마다 다음과 같은 오류가 발생 기능 :Firebase Java admin SDK 오류
서블릿 코드를 설정해야합니다 문서를 통해 진행되었으며 프로젝트 ID를 직접 설정하는 방법을 찾지 못했습니다. 그러나 나는 그것이 service_key와 database url에 이미 쓰여졌 기 때문에 처음부터 필요하지 않아야한다고 생각한다.java.lang.IllegalArgumentException가 : 나는했습니다
public class GeneratorInfoServlet extends HttpServlet { FirebaseApp app = null; @Override public void init(ServletConfig config) { InputStream serviceAccount = Thread.currentThread().getContextClassLoader() .getResourceAsStream("/WEB-INF/service_key.json"); FirebaseOptions options = new FirebaseOptions.Builder() .setCredential(FirebaseCredentials.fromCertificate(serviceAccount)) .setDatabaseUrl("https://project-id.firebaseio.com/") .build(); this.app = FirebaseApp.initializeApp(options); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { PrintWriter out = resp.getWriter(); StringBuffer tokenBuffer = new StringBuffer(); String line; try { BufferedReader reader = req.getReader(); while ((line = reader.readLine()) != null) tokenBuffer.append(line); this.verifyToken(tokenBuffer.toString()); out.print("{'success': false}"); } catch (Exception e) { System.err.print(e); out.print("{'success': true}"); } } private void verifyToken(String idToken) { System.out.println(app); FirebaseAuth.getInstance(this.app).verifyIdToken(idToken) .addOnSuccessListener(decodedToken -> { String uid = decodedToken.getUid(); System.out.println(uid); }).addOnFailureListener(e -> System.out.println(e)); } }
: projectId은 여기
감사합니다.
편집 : FirebaseOptions 빌더에 내장
일반 자바 SDK (비 관리자가) setApplicationId있다 ("PROJECT_ID") 함수. 그러나 나는 조금 다른 내 중포 기지 앱을 초기화하고
나는 나를 위해 일하고
참조 setServiceAccont 메소드가 더 이상 사용되지 않는 최신 Admin SDK 4.1.1을 사용하고 있습니다. 나는 당신의 버전으로 다운 그레이드를 시도한 후에 NullPointerException을 얻고있다. InputStream이 null이고 새로운 SDK 버전이 null 값을 확인하지 않고 오해의 소지가있는 "projectId를 설정해야합니다"라는 오류가 발생합니다. 고마워, 당신의 의견은 문제의 핵심에 나를 가지고있어 –
가, 미안해! 우리는 향후 릴리스에서이 내용을 업데이트 할 것이므로이 경우 더 좋은 오류가 발생합니다. – jwngr
문제 없습니다. 감사 –