dahlia / fedify

ActivityPub server framework in TypeScript
https://fedify.dev/
MIT License
327 stars 13 forks source link

There is no recipient.inboxId #63

Closed redimongo closed 2 weeks ago

redimongo commented 3 weeks ago

Followed the blog example and no mastodon server returns an inboxId. Which then stops the script from accepting the user as a follower.

dahlia commented 3 weeks ago

What do you mean by recipient? Is it an Actor?

redimongo commented 3 weeks ago

see this https://github.com/dahlia/fedify/discussions/61#discussioncomment-9768397

I also shared my full code https://github.com/redimongo/fediIntegration

dahlia commented 3 weeks ago
const recipient = await follow.getActor(ctx);

So, it's an Actor, right? If an Actor has no inboxId it means no "inbox" property in the actual JSON-LD document. You can check this by curling the URL of the recipient (you can see it by console.log(recipient.id?.href);).

redimongo commented 3 weeks ago

This is what I see when the "recipient" data - I have no idea what I am doing wrong, I am using the part that you recommended.

Person {
  id: URL "https://podcastindex.social/users/russell",
  attachments: [
    PropertyValue { name: "Head Developer/Creator", value: "PodToo.com" },
    PropertyValue { name: "Founder", value: "DRN1.com.au" }
  ],
  name: "Russell Harrower 🎙️",
  icon: Image {
    url: URL "https://cdn.masto.host/podcastindexsocial/accounts/avatars/110/822/715/413/028/837/original/f8d8f494"... 12 more characters,
    mediaType: "image/png"
  },
  image: Image {
    url: URL "https://cdn.masto.host/podcastindexsocial/accounts/headers/110/822/715/413/028/837/original/c17e9478"... 12 more characters,
    mediaType: "image/png"
  },
  published: 2023-08-02T00:00:00Z,
  summary: "",
  url: URL "https://podcastindex.social/@russell",
  preferredUsername: "russell",
  publicKey: CryptographicKey {
    id: URL "https://podcastindex.social/users/russell#main-key",
    owner: URL "https://podcastindex.social/users/russell",
    publicKey: CryptoKey {
      type: "public",
      extractable: true,
      algorithm: {
        name: "RSASSA-PKCS1-v1_5",
        modulusLength: 2048,
        publicExponent: Uint8Array(3) [ 1, 0, 1 ],
        hash: { name: "SHA-256" }
      },
      usages: [ "verify" ]
    }
  },
  manuallyApprovesFollowers: false,
  inbox: URL "https://podcastindex.social/users/russell/inbox",
  outbox: URL "https://podcastindex.social/users/russell/outbox",
  following: URL "https://podcastindex.social/users/russell/following",
  followers: URL "https://podcastindex.social/users/russell/followers",
  endpoints: Endpoints { sharedInbox: URL "https://podcastindex.social/inbox" },
  discoverable: false,
  memorial: false,
  indexable: false
}

The only inbox I see is inbox: URL "https://podcastindex.social/users/russell/inbox",

dahlia commented 3 weeks ago

The only inbox I see is inbox: URL "https://podcastindex.social/users/russell/inbox",

Ah, the inspect string is a bit misleading. You should be able to see that you have recipient.inboxId with console.log(recipient.inboxId);.

dahlia commented 2 weeks ago

Since we debugged this problem together with pair programming, I'll close this issue.