This is a tough one to explain, but I'll do my best:
Sally created a Singly account with her normal FB account, her normal Twitter account, and others. Call this Singly account account #1.
Then later, she created another Singly account using a different FB account, but the same Twitter account as before. Call this Singly account account #2.
Today, when she was attempting to post to /proxy/facebook/me/feed with a new status update, it was posting the status updates to her account #2 on Facebook, even though she was logged into Facebook account #1.
Upon looking at the services array that comes back from Singly for her, there are now two IDs in her FB property.
Is this expected behavior? And if so, how do we choose what ID to use when using /proxy* calls for a particular service?
This situation is somewhat less than recommended/supported :-/
One thing you can do to ensure that there's no "magic" happening, is always pass in account=X in the /oauth/authorize call when someone is "connecting" any service to an existing account.
In this case in the flow you describe, they shouldn't have merged, but if Sally tries to log in with the twitter id that is associated with two accounts it would be ambiguous which one would be logged in, we need to do some work to expose this edge case to the app to let them handle it better :/
Also, other endpoints like /services/:service/foo support a id@service syntax to specifically address just one in case there's multiple (when multiple their data is merged just like /types), and /proxy/:service/* probably should support that syntax too :)