FIrebase Java/Android createUser failing

ぃ、小莉子 提交于 2019-12-17 17:01:16

问题


I'm trying to write a simple test of the Firebase user creation and authentication routines so that I can test my Firebase security settings. The code runs smoothly but the callbacks are not invoked and no users are created on the Firebase side.

The output of below with the print statements is:

Begin process
Start Create User
Creating User
End Creating User
End process

Process finished with exit code 0

The code is using the firebase-client-android-2.2.3.jar file for the Firebase classes though I'm just running my test as a java application on a Mac OS. Later this will go into an Android app but I'd like to be able to run it inside my IDE for now. Any insights from experienced Firebase coders much appreciated.

import com.firebase.client.Firebase;
import com.firebase.client.AuthData;
import com.firebase.client.FirebaseError;

import java.util.*;

public class FireRulesTest {


static String firebase_baseUrl = "https://<myfirebase>.firebaseio.com/";

public static void main(String[] args)
        throws FirebaseException {

    System.out.println("Begin process");

    FireRulesTest tester = new FireRulesTest();
    tester.createUser();

    System.out.println("End process");
}

private void createUser()
        throws FirebaseException {

    try {
        System.out.println("Start Create User");

        final String mEmail = "me@email.com";
        final String mPassword = "password";

        final Firebase ref = new Firebase(firebase_baseUrl);
        System.out.println("Creating User");

        ref.createUser(mEmail, mPassword,
                new Firebase.ValueResultHandler<Map<String, Object>>() {

                    @Override
                    public void onSuccess(Map<String, Object> result) {
                        System.out.println("Successfully created user account with uid: " + result.get("uid"));
                        ref.authWithPassword(mEmail, mPassword, new Firebase.AuthResultHandler() {
                            @Override
                            public void onAuthenticated(AuthData authData) {
                                //success, save auth data
                                HashMap<String, Object> authMap = new HashMap<String, Object>();
                                authMap.put("uid", authData.getUid());
                                authMap.put("token", authData.getToken());
                                authMap.put("email", mEmail);
                                authMap.put("password", mPassword);

                                Firebase currentUserRef = new Firebase(firebase_baseUrl + "movo/users/" + authData.getUid());
                                authMap.put("currentUser", currentUserRef);

                                System.out.println("User ID: " + authData.getUid() +
                                        ", Provider: " + authData.getProvider() +
                                        ", Expires:" + authData.getExpires());


                                System.out.println("Authentication complete");
                            }

                            @Override
                            public void onAuthenticationError(FirebaseError firebaseError) {
                                System.out.println("Authentication Error authenticating newly created user. This could be an issue. ");
                                System.out.println(firebaseError.getMessage());
                            }

                        });

                        }

                        @Override
                        public void onError(FirebaseError firebaseError) {
                        System.out.println("On Error authenticating newly created user. This could be an issue. ");
                            System.out.println(firebaseError.getMessage());
                        }
            });

            System.out.println("End Creating User");

        } catch (Exception fbe) {
            System.out.println("Exception: " + fbe.getMessage());
            fbe.printStackTrace();
        }

    }

}

回答1:


You'll want to add a Thread.sleep at the end of the program. Likely your program exits before Firebase gets a chance to send anything to the server.

A more proper solution would be to introduce actual lifecycle management into your app, e.g. waiting for the createUser call to finish. But given that you'll be migrating this to Android (which handles app lifecycle completely different anyway) that might not be worth the effort.



来源:https://stackoverflow.com/questions/29975024/firebase-java-android-createuser-failing

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!