dequis / purple-facebook

Facebook protocol plugin for libpurple (moved from jgeboski/purple-facebook)
GNU General Public License v2.0
954 stars 87 forks source link

Null value for $.viewer.message_threads.sync_sequence_id #306

Closed paulguy closed 7 years ago

paulguy commented 7 years ago

ADMIN EDIT

This is already fixed in the latest release. This ticket is only open for visibility

Get the latest version from here https://github.com/dequis/purple-facebook/releases


Original ticket description

Connection was lost earlier today. Reconnecting results in immediately disconnecting with Null value for $.viewer.message_threads.sync_sequence_id.

pidgin/libpurple 1.12.0 purple-facebook 0.9.0-c9b74a765767

scrad commented 7 years ago

I'm getting this error as well

Windows 8.1 Pidgin 2.10.11 (libpurple 2.10.11) purple-facebook Version: 20161121~a157645~c9b74a765767~117

SarcasmCupcakes commented 7 years ago

All morning. Even upgraded Pidgin and re-installed the two .dll files.

drainx85 commented 7 years ago

Just happened to me as well when I logged in to my pc this evening. Wonder what facebook changed this time...

jh-maeng commented 7 years ago

I'm getting same error.

A few logs below:

(10:33:57) http: releasing a socket: 0E67C758 (10:33:57) http: Request 02396618 performed successfully. (10:33:57) facebook: HTTP Response (02396618): (10:33:57) facebook: Response Error: 200 (10:33:57) facebook: Response Data: {"viewer":{"message_threads":{"count":9,"mute_until":0,"nodes":[],"page_info":{"has_next_page":true},"sync_sequence_id":null,"unread_count":0,"unseen_count":0}}} (10:33:57) facebook: Parsing JSON: {"viewer":{"message_threads":{"count":9,"mute_until":0,"nodes":[],"page_info":{"has_next_page":true},"sync_sequence_id":null,"unread_count":0,"unseen_count":0}}}

(10:33:57) connection: Connection error on 0E49FD90 (reason: 0 description: Null value for $.viewer.message_threads.sync_sequence_id) (10:33:57) http: destroying socket: 0E67C758 (10:33:57) account: Disconnecting account xxxx (02356C00) (10:33:57) connection: Disconnecting connection 0E49FD90 (10:33:57) facebook: Writing 14 (flags: 0x0) (10:33:57) facebook: 00000000 e0 00 |..| (10:33:57) facebook: 00000010

bcd001 commented 7 years ago

This isn't a random glitch, it looks like facebook has decided to stop supporting old versions of the messenger app. I guess purple-facebook was based on the old protocol. Seems like we're out of luck until things are ported over.

advcomp2019 commented 7 years ago

The weird thing is my messenger is still working just fine. I am kinda wondering one thing. Does any of you use mobile device and did it get an update? Just trying to figure this out might not be fun maybe.

aeridus commented 7 years ago

Same here, and I don't use the mobile app. I updated Pidgin and still see the same error.

advcomp2019 commented 7 years ago

That rules that out maybe.

Steap commented 7 years ago

I can confirm this on Debian GNU/Linux, with Pidgin/libpurple 2.12 and purple-facebook a15764504022aa5d3fd243f5e27902e2a61f977c .

This similar bug solved itself, so, wait & see.

auscompgeek commented 7 years ago

I suspect this has something to do with Facebook dropping support for ancient versions of Messenger: https://messengerblog.com/general-messenger/update-on-support-for-older-versions-of-messenger-and-facebook-apps/

ghost commented 7 years ago

Just came to say that I have the same problem

alexolog commented 7 years ago

Getting the same error here. And people are reporting it on bitllbee

ionl commented 7 years ago

Same problem for me $ lsb_release -d Description: Ubuntu 16.10 $ pidgin -v Pidgin 2.10.12 (libpurple 2.10.12) $ uname -a Linux pc 4.8.0-42-generic #45-Ubuntu SMP Wed Mar 8 20:06:06 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

paulguy commented 7 years ago

Just randomly got a few messages then something like "couldn't mark messages as received" or something along those lines then the same disconnection error again.

I had been noticing a lot of double or triple messages in the past month or so, so maybe there had been some odd breakages that had been going unnoticed for a while.

This might indicate that it won't be the huge tear up and rewrite that people seem to be worrying about in that the protocol might not have changed all that much, just in a few places.

jskladan commented 7 years ago

Having the same issue, Pidgin 2.11.0-1.fc24 (libpurple 2.11.0), purple-facebook-0.9.0-c9b74a765767 (compiled from git)

anecznik commented 7 years ago

I have the same problem

DISTRIB_DESCRIPTION="Ubuntu 16.04.2 LTS" Pidgin 2.10.12 (libpurple 2.10.12)

but my sister have windows 8.1 and Pidgin 2.11.0 (libpurple 2.11.0) and it's work.

dequis commented 7 years ago

Cross-posting from https://github.com/bitlbee/bitlbee-facebook/issues/138#issuecomment-290010091

well, fuck

mfaerevaag commented 7 years ago

+1

Arch Linux 4.10.6-1-ARCH x86_64 Pidgin 2.12.0 (libpurple 2.12.0) purple-facebook 0.9.0-1

mattlog commented 7 years ago

Same here

Windows 7 64bit Pidgin 2.12.0

dequis commented 7 years ago

Fix: https://github.com/dequis/purple-facebook/releases/tag/v0.9.1-c9b74a765767

edit: nevermind still not fixed

freddysdad commented 7 years ago

fix allows connection/login but when sending a message says "failed to send message"

kalab-oto commented 7 years ago

for me also fix login, but after successful login its instantly disconected (can see contacts for second): Arguments are invalid

I had two phase verification (SMS), but I disable it for testing it. Also I approve device login on FB webpage.

freddysdad commented 7 years ago

I fixed arguments are invalid by disabling "mark messages as read" , "show self messages" , "show unread messages" , "open new group chats with incoming messages" - although I can't be sure which made it work

Metalhead33 commented 7 years ago

In addition to disconnecting because failed to send message, it also fails to reconnect saying Arguments are invalid, and when I receive a message, it's Failed to mark read

freddysdad commented 7 years ago

receiving messages works OK with "mark messages as read" disabled

darkmanek commented 7 years ago

+1 Manjaro 4.10.6-1-ck-pentm i686 Pidgin 2.12.0 (libpurple 2.12.0) purple-facebook 0.9.0-1

purple-debug.txt

jcengelsen commented 7 years ago

Same problem :

$ lsb_release -d Description: Linux Mint 18 Sarah $ pidgin -v Pidgin 2.10.12 (libpurple 2.10.12) $ uname -a Linux ThinkPad-T530 4.4.0-64-generic #85-Ubuntu SMP Mon Feb 20 11:50:30 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

LunaSquee commented 7 years ago

Getting this as well Arch Linux Pidgin 2.12.0 (libpurple 2.12.0) Linux EvertLaptop 4.10.4-1-ARCH #1 SMP PREEMPT Sat Mar 18 19:39:18 CET 2017 x86_64 GNU/Linux

marsjaninzmarsa commented 7 years ago

More info: https://github.com/bitlbee/bitlbee-facebook/issues/138#issuecomment-290037214

buchty commented 7 years ago

Latest update (9e4c738) cures "Null value for $.viewer.message_threads.sync_sequence_id", but lets not send anything ("failed to send message" -> disconnect), also occasional "arguments are invalid" occurs. (Pidgin 2.12.0, Ubuntu 12.04LTS, Kernel 3.13.0-113-generic)

norbert79 commented 7 years ago

Just a generic remark over here: As it seems Facebook has added a new functionality to its chat by adding emoticons to specific lines, above the regular emoticons handling (possibly adding the functionality to express reactions on specific texts instantly). Could this be related to the failing of sending messages as specific flag is not being used or not handled well?

alexander-e commented 7 years ago

After updating, I get the same error message as @buchty : "Arguments are invalid". (Ubuntu 16.04, Pidgin 2.10.12)

buchty commented 7 years ago

Seems like the "arguments are invalid" is related to clearing message-read flags, cause it disappears once you clear unread messages using the browser-based messenger.

buchty commented 7 years ago

5061391 seems to work. Flawless login, receiving, and sending so far. Great job!

PeopleInside commented 7 years ago

I AM using Pidgin, how to fix this issue in Pidgin?

dequis commented 7 years ago

Yeah everything seems to be working now, but please test.

Release with dist tarball for linux users: https://github.com/dequis/purple-facebook/releases/tag/v0.9.2-c9b74a765767

Windows users can get a new dll from the usual place, https://github.com/dequis/purple-facebook/wiki/Installing-on-Windows

Remember to restart pidgin

PeopleInside commented 7 years ago

Works, thank you!

kalab-oto commented 7 years ago

Works, thank you very much for fast fix! :+1:

freddysdad commented 7 years ago

confirmed working on Linux/Pidgin

Metalhead33 commented 7 years ago

Confirmed to work flawlessly.

mattlog commented 7 years ago

Works on Windows 7/Pidgin, thanks.

SarcasmCupcakes commented 7 years ago

Works on Windows 7! Thank you.

dequis commented 7 years ago

Cross posting from https://github.com/bitlbee/bitlbee-facebook/issues/138#issuecomment-290111087


Here's a long-form explanation of what happened here:

As others suggested, https://messengerblog.com/general-messenger/update-on-support-for-older-versions-of-messenger-and-facebook-apps/ is indeed relevant. They deploy to production on tuesdays which is when it broke.

I was aware of this, but, as far as I knew, nothing needed updating, because it says that versions older than 5 will be discontinued but we're compatible up to version 38, mostly. I suspected the /send_message2 method might go away, or that the "MQIsdp" connections would break (the latter are only used by the oldest bitlbee-versions). But neither of those were issues, as they seem to be used by versions newer than 5 (I tested 14 and 38 today)

Versioning in facebook is complicated, which is both good and bad. Good because it allows them to have excellent backwards compatibility (as far as they want to keep it). Bad because it's hard to understand where to draw the line on what a version means.

There were two fixes:

  1. The graphql query hash to get the sequence id. Those hashes represent a textual graphql query stored in the server, and those queries are basically a way to tell the server "pick these fields from this deeply nested structure and return them with this other structure". We don't know what the exact query is, we just know the arguments and the result. Well, we don't exactly know the arguments, as evidenced by those errors some people got today. But they are discoverable with some effort.

    So my best guess is that something in the underlying structure of the facebook graph API changed to stop supporting old clients (likely not directly related), and this means that the field that was accessed by the old hash was no longer there. The newer hash checks a different location, or filters it differently, or who knows what, but manages to access that field successfully. It also has different arguments so I'm only using it for the sync sequence number for now, while thread listing uses the other query, because everything else just works.

  2. The version string in the MQTT CONNECT message. This was a surprise because it was previously empty and just worked, but it's how they chose to stop old versions from sending messages. I think that was the only intended breakage, and who knows, maybe the other issue is a bug that facebook should fix. Heh. Our code also likes to disconnect too easily on almost all errors, which seems to be a successful strategy overall.

Not too bad overall. Next time we won't have the surprise version check since we're sending a version exactly where they expect it. Also, I'm happy with the approach they've taken to deprecate very old versions. This announcement sounds like they are committing to 3 years or so of support for old versions, which sounds great.

EDIT: I should mention, the graphql hash for the first (and most important) fix was found by @EionRobb, go thank him too.

darkmanek commented 7 years ago

Works on Manjaro

DinoZervos commented 7 years ago

Working on Windows 10 & Pidgin. Thanks for the quick fix!

dequis commented 7 years ago

Keeping this open for visibility.

Also at this point confirmations that it works are unneeded, but I do need to know if anything broke.

Dodger395 commented 7 years ago

I am using the latest dll located at https://dl.voidium.net/pidgin/ and I am getting a "ERROR_QUEUE_OVERFLOW" error when trying to enable the account. This started first thing this morning.

Edit: The pidgin System Log says I signed on and then immediately signed off again.

dequis commented 7 years ago

@Dodger395 please open a new ticket

edit: and include a debug log https://github.com/dequis/purple-facebook/wiki/Debugging-Logs

scrad commented 7 years ago

Works on windows 8.1

Thanks for the speedy fix and support.

agent-rat commented 7 years ago

Tested working on win7. Nice one!