parse-community / parse-php-sdk

The PHP SDK for Parse Platform
https://parseplatform.org/
Other
811 stars 346 forks source link

Problem with user sign up "Empty reply from Server" #386

Closed gate3 closed 6 years ago

gate3 commented 6 years ago

Issue Description

I have been using parse server for a while now and my sign up used to work. But recently, i tried creating a new user using the signUp method and it doesn't work. On my local development pc i am getting thi error

Empty reply from server

Steps to reproduce

My code is like this:

$user = new ParseUser();
            $user->setUsername($request->email);
            $user->setPassword($request->password);
            $user->set("name", $request->name);
            $user->set("organization_name", $request->org_name);
            $user->set("phone", $request->phone);
            $user->set("email", $request->email);
            //$user->set("emailVerified", false);
            $user->set("domain",$request->domain);
            $user->set("verification_code",str_random(40));
            $user->set("domain",$request->domain);
            $user->set('account_type',$sub_type);
            //use salt to get hash id, hash id was encrypted using the salt
            $user->set('user_role','admin');
            $user->set("searchable", strtolower($request->name));
            $user->set('first_time',true);

            $user->signUp(); 

The code seems to get stuck at signUp. I tried echoing and breaking after calling sign up but the code never gets there. No data is also saved in parse server.

Environment Details

Logs/Traces

The problem occurs differently on my dev server and production. In production i am getting this error

ErrorException in ParseObject.php line 662: Invalid argument supplied for foreach() in ParseObject.php line 662 at HandleExceptions->handleError('2', 'Invalid argument supplied for foreach()', 'D:\home\site\laravel\vendor\parse\php-sdk\src\Parse\ParseObject.php', '662', array('data' => null, 'completeData' => true, 'this' => object(ParseUser))) in ParseObject.php line 662 at ParseObject->mergeFromServer(null) in ParseObject.php line 1246 at ParseObject->mergeAfterSave(null) in ParseObject.php line 1081 at ParseObject::deepSave(object(ParseUser), false) in ParseObject.php line 989 at ParseObject->save() in ParseUser.php line 122 at ParseUser->signUp() in AuthController.php line 193 at AuthController->create_acct('KJhh5DtdADbdZB7qAOL0AqoqkF5Ip40ButNZ3Tmj3UtA0E0RPaFdkBQU42Di', 'KZcmu5', object(Request), object(Utils), object(Mail), object(ParseRepository)) at call_user_func_array(array(object(AuthController), 'create_acct'), array('salt' => 'KJhh5DtdADbdZB7qAOL0AqoqkF5Ip40ButNZ3Tmj3UtA0E0RPaFdkBQU42Di', 'plan_id' => 'KZcmu5', object(Request), object(Utils), object(Mail), object(ParseRepository))) in Controller.php line 80 at Controller->callAction('create_acct', array('salt' => 'KJhh5DtdADbdZB7qAOL0AqoqkF5Ip40ButNZ3Tmj3UtA0E0RPaFdkBQU42Di', 'plan_id' => 'KZcmu5', object(Request), object(Utils), object(Mail), object(ParseRepository))) in ControllerDispatcher.php line 146 at ControllerDispatcher->call(object(AuthController), object(Route), 'create_acct') in ControllerDispatcher.php line 94 at ControllerDispatcher->Illuminate\Routing{closure}(object(Request)) at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52 at Pipeline->Illuminate\Routing{closure}(object(Request)) in LoggedIn.php line 24 at LoggedIn->handle(object(Request), object(Closure)) at call_user_func_array(array(object(LoggedIn), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 136 at Pipeline->Illuminate\Pipeline{closure}(object(Request)) at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32 at Pipeline->Illuminate\Routing{closure}(object(Request)) at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103 at Pipeline->then(object(Closure)) in ControllerDispatcher.php line 96 at ControllerDispatcher->callWithinStack(object(AuthController), object(Route), object(Request), 'create_acct') in ControllerDispatcher.php line 54 at ControllerDispatcher->dispatch(object(Route), object(Request), 'App\Http\Controllers\Auth\AuthController', 'create_acct') in Route.php line 174 at Route->runController(object(Request)) in Route.php line 140 at Route->run(object(Request)) in Router.php line 724 at Router->Illuminate\Routing{closure}(object(Request)) at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52 at Pipeline->Illuminate\Routing{closure}(object(Request)) in VerifyCsrfToken.php line 64 at VerifyCsrfToken->handle(object(Request), object(Closure)) at call_user_func_array(array(object(VerifyCsrfToken), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 136 at Pipeline->Illuminate\Pipeline{closure}(object(Request)) at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32 at Pipeline->Illuminate\Routing{closure}(object(Request)) in ShareErrorsFromSession.php line 49 at ShareErrorsFromSession->handle(object(Request), object(Closure)) at call_user_func_array(array(object(ShareErrorsFromSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 136 at Pipeline->Illuminate\Pipeline{closure}(object(Request)) at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32 at Pipeline->Illuminate\Routing{closure}(object(Request)) in StartSession.php line 64 at StartSession->handle(object(Request), object(Closure)) at call_user_func_array(array(object(StartSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 136 at Pipeline->Illuminate\Pipeline{closure}(object(Request)) at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32 at Pipeline->Illuminate\Routing{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 37 at AddQueuedCookiesToResponse->handle(object(Request), object(Closure)) at call_user_func_array(array(object(AddQueuedCookiesToResponse), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 136 at Pipeline->Illuminate\Pipeline{closure}(object(Request)) at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32 at Pipeline->Illuminate\Routing{closure}(object(Request)) in EncryptCookies.php line 59 at EncryptCookies->handle(object(Request), object(Closure)) at call_user_func_array(array(object(EncryptCookies), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 136 at Pipeline->Illuminate\Pipeline{closure}(object(Request)) at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32 at Pipeline->Illuminate\Routing{closure}(object(Request)) at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103 at Pipeline->then(object(Closure)) in Router.php line 726 at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 699 at Router->dispatchToRoute(object(Request)) in Router.php line 675 at Router->dispatch(object(Request)) in Kernel.php line 246 at Kernel->Illuminate\Foundation\Http{closure}(object(Request)) at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52 at Pipeline->Illuminate\Routing{closure}(object(Request)) in CheckForMaintenanceMode.php line 44 at CheckForMaintenanceMode->handle(object(Request), object(Closure)) at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 136 at Pipeline->Illuminate\Pipeline{closure}(object(Request)) at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32 at Pipeline->Illuminate\Routing{closure}(object(Request)) at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103 at Pipeline->then(object(Closure)) in Kernel.php line 132 at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 99 at Kernel->handle(object(Request)) in index.php line 53

while on development i am getting empty reply from server.

montymxb commented 6 years ago

@gate3 getting an empty reply from the server can signify a # of issues. It's possible that the quantity of data/args you're putting together during signup may be too much. Have you tried just signing up the user, and then setting unique parameters to save once they have been signed up?

gate3 commented 6 years ago

OK. let me try this and get back thanks. Actually, i was about to edit my post, the error has changed. When I try to signup now, i am getting Bad Request as the response.

gate3 commented 6 years ago

Didn't work unfortunately. reduced to the bare minimum of just password and username still didnt work. The error is coming from ParseClient, on this line

 if (strpos($contentType, 'text/html') !== false) {
            throw new ParseException('Bad Request', -1);
       }

I investigated further and found out that, the problem comes from here

// send our request
        $response = $httpClient->send($url, $method, $data);

$response is empty

gate3 commented 6 years ago

I have been able to solve this issue. turns out, the error was from a beforeSave function in cloud code for _User table. I am closing this issue now.

montymxb commented 6 years ago

Glad to hear you resolved it! Just curious were you able to identify the issue from the information produced sdk-side or did you have to go digging to come across the issue on the server? Always want to make sure that the sdk is being relatively verbose when it comes to errors which would otherwise be difficult to find.