parse-community / ParseLiveQuery-Android

Parse LiveQuery client for Android.
Other
84 stars 32 forks source link

subscribe Error #93

Open kkbpower opened 5 years ago

kkbpower commented 5 years ago

ParseQuery query = ParseQuery.getQuery("Chat"); client = ParseLiveQueryClient.Factory.getClient(); SubscriptionHandling subscriptionHandling = client.subscribe(query);

What is this error?

E/ParseLiveQueryClient: Error handling message com.parse.LiveQueryException$InvalidResponseException: {"op":"error","error":"Key in request is not valid","code":4,"reconnect":true} at com.parse.ParseLiveQueryClientImpl.parseMessage(ParseLiveQueryClientImpl.java:268) at com.parse.ParseLiveQueryClientImpl.access$000(ParseLiveQueryClientImpl.java:24) at com.parse.ParseLiveQueryClientImpl$1.call(ParseLiveQueryClientImpl.java:201) at com.parse.ParseLiveQueryClientImpl$1.call(ParseLiveQueryClientImpl.java:199) at bolts.Task$4.run(Task.java:357) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) at java.lang.Thread.run(Thread.java:776)

Help me plz!

mmimeault commented 5 years ago

Key in request is not valid

Did you initialized parse with your API key ?

kkbpower commented 5 years ago

Sure. I did initialization in my custom application. So I used the cloud call!

mmimeault commented 5 years ago

You should only need

        Parse.Configuration build = new Parse.Configuration.Builder(this)
                .applicationId(applicationId)
                .clientKey(clientKey)
                .server(serverUrl)
                .build();
        Parse.initialize(build);

This is source of the error triggered in the server https://github.com/parse-community/parse-server/blob/ce7ff2ca441da2956f779e7d41dc42da2db01c7d/src/LiveQuery/ParseLiveQueryServer.js#L576-L580 https://github.com/parse-community/parse-server/blob/ce7ff2ca441da2956f779e7d41dc42da2db01c7d/src/LiveQuery/ParseLiveQueryServer.js#L609-L622

It seem to be an issue with the valid keys you are using.

@flovilmart Is it an issue why the parse live query server configuration? Why would it expect a list of valid keyPairs?

kkbpower commented 5 years ago

My Custom Application class

Parse.Configuration.Builder parseConfigBuilder = new Parse.Configuration.Builder(this); parseConfigBuilder.applicationId(applicationId); parseConfigBuilder.clientKey(clientKey); parseConfigBuilder.server(myServerURL); Parse.initialize(parseConfigBuilder.build());

I am using many cloud call and it's okay. But only occurred error about live query. So when I tried to implement live query on mac os app by objective c, It was okay.

rommansabbir commented 5 years ago

Check this working project https://github.com/rommansabbir/ParseLiveQueryAndroid

kkbpower commented 5 years ago

@rommansabbir I don't use Back4App! But your answer is using the Back4App.

rommansabbir commented 5 years ago

@kkbpower You need parse live query service right? I had a problem with liveQuery and i solved it. Try this if this project satisfy your problem

kkbpower commented 5 years ago

@mmimeault I saw your links. ParseLiveQueryServer need keypairs. javascriptKey and appId are in keypairs map variable. But just set serverURL, appId and clientKey when I set the Parse initializationg in Android.

Is this issue ParseLiveQuery bug?

@rommansabbir

mmimeault commented 5 years ago

Well on my side live query is working for 2 years now without any issue like that. What is the version of the parse server you are using . I will try to help you.

dplewis commented 5 years ago

keyPair

A JSON object that serves as a whitelist of keys. It is used for validating clients when they try to connect to the LiveQuery server

What happens if you remove keyPair from your server config? I don't think its required to have keyPairs, where did you see that?

Can you post your server config?

As always you could also debug your server in the locations @mmimeault pointed out.