misskey-dev / misskey

🌎 An interplanetary microblogging platform 🚀
https://misskey-hub.net/
GNU Affero General Public License v3.0
9.71k stars 1.3k forks source link

Funkwhale *Follow Accept* Objects not reaching Misskey #9139

Open ZenKyma opened 1 year ago

ZenKyma commented 1 year ago

💡 Summary

When I follow a funkwhale account or channel from a misskey instance, the (Follow+) button stays on (Processing...) indefinitely as misskey fails to process the incoming Following Accept object.

🥰 Expected Behavior

When I follow a funkwhale account or channel from a misskey instance, the (Follow+) button should turn to (Unfollow-) after having processed the following request correctly.

🤬 Actual Behavior

When I follow a funkwhale account from a misskey instance, the (Follow+) button stays on (Processing...) indefinitely. New tracks from the followed funkwhale account are not pushed to the misskey timeline. For funkwhale channels the (Send follow request+) changes to (Follow request pending⌛) and never resolves even if it is accepted from funkwhale.

The logs at my funkwhale instance confirm that a Follow object has been received from the misskey instance and an Accept object has been sent back to misskey. My conclusion is that misskey fails to process the incoming Following Accept object.

Here is an example Accept object, as it is send from funkwhale to misskey:

{
"id": "https://misskey.ai/users/973sacs0ff#follows/a1c6978c-4b64-4559-a565-4126c2313324/accept",
"to": [
    "https://misskey.ai/users/973sacs0ff"
    ],
"type": "Accept",
"actor": "https://music.synkosmos.org/federation/actors/zenkymatics",
"object": {
    "id": "https://misskey.ai/users/973sacs0ff#follows/a1c6978c-4b64-4559-a565-4126c2313324",
    "type": "Follow",
    "actor": "https://misskey.ai/users/973sacs0ff",
    "object": "https://music.synkosmos.org/federation/actors/zenkymatics",
    "@context": [
        "https://www.w3.org/ns/activitystreams",
        "https://w3id.org/security/v1",
        "https://funkwhale.audio/ns",
        {
            "Hashtag": "as:Hashtag",
            "manuallyApprovesFollowers": "as:manuallyApprovesFollowers"
            }
        ]
    },
"@context": [
    "https://www.w3.org/ns/activitystreams",
    "https://w3id.org/security/v1",
    "https://funkwhale.audio/ns", {
        "Hashtag": "as:Hashtag",
        "manuallyApprovesFollowers": "as:manuallyApprovesFollowers"
        }
    ]
}

📝 Steps to Reproduce

  1. On your Misskey instance, search for a Funkwhale channel of your choice (e.g. @zenkymatics@music.synkosmos.org)
  2. Click on the (Send follow request+) button on the profile
  3. Confirm that the Follow request is newer approved and stays on (Follow request pending⌛) indefinitely, even if funkwhale should automatically accept the request.

📌 Environment

Tested with 3 different Misskey instances (self-hosted nexus.synkosmos.org [v12.119.0], misskey.de [v12.119.0], misskey.ai [v12.118.1]) and 3 different funkwhale instances (self-hosted music.synkosmos.org [1.2.8], audio.gafamfree.party [1.2.8], funkwhale.it [1.2.5]). All the same result. On the other hand, my friendica account is able to follow and receive new tracks from both users and channels from my self-hosted funkwhale instance.

Misskey version: v12.119.0 Your OS: Windows 10 Your browser: Vivaldi [Chromium]

shuuji3 commented 11 months ago

@ZenKyma Hi, we encountered (probably) the same issue for another ActivityPub/Fediverse server. The cause of the issue was the id of the Accept object from the non-Misskey server didn't match the domain in id to its domain name.

In your case, probably this id

"id": "https://misskey.ai/users/973sacs0ff#follows/a1c6978c-4b64-4559-a565-4126c2313324/accept",

would need to be replaced with the one issued by funkwhale server and containing the sender server domain https://music.synkosmos.org/, instead of the source server's domain misskey.ai.

You can see our case here: https://github.com/jointakahe/takahe/issues/323