- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
几天来,我一直在尝试使用 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/
我有一个使用 css 列的下拉菜单,当我使用 jquery slide() 时,它会调整下拉框的大小,并重排内容直到达到完整高度。 这是一个工作示例 https://codepen.io/peterg
我有一个带有嵌套 ScrollViewer 的 Expander,如下所示: 代码(简化版)
我想在所有 ajax 调用之后调用一些 javascript 函数。我知道如何调用每个单独的 ajax 调用中的函数,如下所示: function xyz() { if (window.XMLHttp
我想将值从应用程序端传递到 api。在此 api 调用中传递图像、名字、电子邮件、电话和位置。在 Debug模式下,检查值不会被传递。 代码下方 File file = null;
我正在尝试在使用reportlab生成的pdf中的表格后插入分页符,我正在使用以下函数生成pdf: def render_to_pdf(template_src, context_dict): t
CBPeripheralManager 是否有推荐的方法来终止连接。到目前为止我发现的最好的方法就是干脆不响应动态值,然后 BLE 堆栈似乎关闭了连接,但这似乎很粗糙。 一定有更好的方法吗? 最佳答案
我的 API 的 REST 端位于以下地址:http://test.jll.aplikacje-dedykowane.pl/rest/warehouse/all 。现在,我尝试返回在此页面准备的 JS
我有以下 CPP 代码。我想做的是,当我的 native 端发生错误时,我会通知 Java 该错误。我用了How can I catch SIGSEGV (segmentation fault) an
限制对象的方法之一是像这样给函数添加限制 def ten_objects(): obj = Model.objects.all()[0:10] # limit to 10 retur
我目前在电信公司实习,这是一个专业,也是本科生。我有很多选择。据我所知,我知道独立应用程序端的 c、c++、c#、java 语言,在移动端我尝试进入 android 世界,也知道 php、mysql、
我想让我的边框底部看起来像这样: 有一个 flex 的末端。目前它看起来像这样: 我尝试使用的 CSS 是 border-bottom-right-radius: 10px;。代码如下所示:
我有一个 Flutter 项目,突然间,据我所知,我没有做任何特别的事情..Android 端开始显示错误,我完全迷路了,我完全不知道哪里出了问题,也不知道为什么会这样。 这就是我打开 android
我有一个自定义对象列表 (List) 。我需要将此数据发送到 React Native 端以显示在平面列表中。我该怎么做?这个列表出现在 类 NativeToReact(reactContext:Re
我有这个代码: #if defined(NOT_STANDALONE) JNIEXPORT void JNICALL sumTraces (JNIEnv* env, jclass caller,
我有一个定义一对多模型关系的 Django 应用程序。模型如下所示: from django.db import models # Create your models here. class Str
我有以下代码,它根据 IFrame 内容的大小调整 IFrame 的大小: function setIframeHeight(id) {
如何创建自定义过滤器 angularjs javascript Controller 端?我想通过 SegmentId 在名为段的数组中搜索,以创建过滤器,该过滤器通过 SegmentId 在段数组搜
我的代码在 netbeans 8.0.2 中我几乎尝试了所有方法,但没有结果。请帮助我。如何在 netbeans 中显示它? 最佳答案 您只需单击源包(源文件),它就会显示您的项目文件。 关于java
我想这是纯 C++ 问题和 OpenGL 问题之间的一种交叉。我有一个统一的缓冲区,并在其中分配 sizeof(ShaderData) 字节的空间。我在着色器的 GPU 端使用 std140 布局。
我对 Hadoop 中 reduce 端的文件合并过程的理解有问题,因为它在“Hadoop:权威指南”(Tom White)中有所描述。引用它: When all the map outputs ha
我是一名优秀的程序员,十分优秀!