gpt4 book ai didi

java - 我正在尝试使用 Firebase 为 Java 桌面应用程序构建后端

转载 作者:搜寻专家 更新时间:2023-11-01 02:44:04 24 4
gpt4 key购买 nike

几天来,我一直在尝试使用 Java(不是 Android)和 Firebase 进行简单用户身份验证。在开始使用 Firebase 的用户身份验证类之前,我尝试使用 Java 在我的 Firebase Reference 上进行简单的保存和检索,但没有成功。没有错误报告,但 Firebase 中没有任何反应(数据没有变化)。过去,我能够毫无问题地将 Firebase 与 Android SDK 集成。我正在为 JVM 使用 Firebase JAR,但没有任何反应。

import com.firebase.client.AuthData;
import com.firebase.client.DataSnapshot;
import com.firebase.client.Firebase;
import com.firebase.client.FirebaseError;
import com.firebase.client.ValueEventListener;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.HashMap;

/**
*
* @author Chidi
*/
public class Auth {
private final Firebase usersRef;
private boolean isNewUser = false;
private String uid = null;
private HashMap<String, Object> userHash;

public Auth() {
Firebase rootRef = new Firebase("https://tranzchat.firebaseio.com/");
this.usersRef = rootRef.child("users");
userHash = new HashMap<>();
}

public void createUser(final String email, final String password, String name, String default_lang) {
userHash.put("email", email);
userHash.put("password", this.hashPassword(password));
userHash.put("name", name);
userHash.put("default_lang", default_lang);
Vars.dbcon.createUser(email, password, new Firebase.ResultHandler() {
@Override
public void onSuccess() {
System.out.println("Created the new user");
// Sets isNewUser to true after creating the new user
isNewUser = true;
signIn(email, password);
if(uid != null) {
// Try to store use information
Firebase newUserRef = usersRef.child(uid);
newUserRef.setValue(userHash, new Firebase.CompletionListener(){
@Override
public void onComplete(FirebaseError fe, Firebase frbs) {
System.out.println("Completed Database Insertion");
}

});
} else {
System.out.println("Could not retrieve UID");
}
}

@Override
public void onError(FirebaseError fe) {
System.out.println("An error occured while creating the user.");
}
});
}

public void signIn(String email, String password) {
Vars.dbcon.authWithPassword(email, password, new Firebase.AuthResultHandler() {
@Override
public void onAuthenticated(AuthData authData) {
uid = authData.getUid();
if(!isNewUser) {
// Try to get new user information and store it in the user object
usersRef.child(uid).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
userHash = (HashMap<String, Object>) snapshot.getValue();
}
@Override
public void onCancelled(FirebaseError firebaseError) {
System.out.println("The read failed: " + firebaseError.getMessage());
}
});
}
}
@Override
public void onAuthenticationError(FirebaseError firebaseError) {
// there was an error
}
});
}
public String hashPassword(String password) {
String md5 = null;
if(password == null) return null;
try {
// Create MessageDigest object for MD5
MessageDigest digest = MessageDigest.getInstance("MD5");
// Update input string in message digest
digest.update(password.getBytes(), 0, password.length());
// Converts message digest value in base 16 (hex)
md5 = new BigInteger(1, digest.digest()).toString();
} catch(NoSuchAlgorithmException e) {
e.printStackTrace();
}
return md5;
}

// Test Suite
public static void main(String[] args) throws InterruptedException {
Vars.init();
Thread firebaseAuth = new Thread(new Runnable() {
@Override
public void run() {
Auth au = new Auth();
au.createUser("chidiebere.nnadi@gmail.com", "password", "Chidiebere Nnadi", "en");
}
});
firebaseAuth.start();
firebaseAuth.join();
}
}

最佳答案

我刚刚发现了它的问题。该线程在 Firebase 可以调用 onComplete 函数之前结束。您可以在应用程序的最后一行代码之后的循环中调用 Thread.sleep(x_ms)

关于java - 我正在尝试使用 Firebase 为 Java 桌面应用程序构建后端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26671214/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com