The goal since about July of 2023 had been to find a way to automatically share each new blog post to Bluesky. In a separate article I discuss the process of trying to select a plugin for this function, eventually choosing Share on Bluesky. This article describes how, after lots of experimentation, I eventually got the Share on Bluesky plugin to work.
Installation of Share on Bluesky was easy as one would expect it to be. In the “add plugins” page of my WordPress site, I searched for and found Share on Bluesky. I clicked “Install Now” and then clicked “Activate”. All of this seemed quite routine. Of course it is prudent to “Enable auto-updates”.
Common sense dictates that what ought to happen next is “settings”. For some plugins it is very hard to find the settings, amounting to an Easter Egg. For this app, however, there are at least two ways to find the settings:
-
-
- in “Installed plugins”, scroll down to Share on Bluesky and click on “Settings”, or
- in “Settings”, scroll down to “Bluesky” and click on “Bluesky”.
-
Having reached your “Settings” page for Share on Bluesky, you are greeted by three data-entry fields, shown in a screen shot at right and detailed below.
-
- Bluesky Domain, with help text The domain of your Bluesky instance. (This has to be a valid URL including “http(s)”)
- Bluesky “Identifier”, with help text Your Bluesky identifier.
- Password, with help text Your Bluesky application password. It is needed to get an Access-Token and will not be stored anywhere.
What is required of the user is to somehow guess the correct answers to these three riddles, and then click “Save Changes”. Let’s go through the three riddles one by one.
My Bluesky instance. What does “my Bluesky instance” mean? It turns out that this really does mean something. It turns out that Bluesky is an application that uses something called the AT Protocol (Wikipedia article) to make itself decentralized. What that means is you can run the Bluesky application on your own server (any computer you have at home, basically). This allows you to have full control over your data and what specific content is allowed on your server, but you’re still connected to and can interact with the broader Bluesky network. You can even allow other people to join your server to build your own smaller community within the Bluesky network that revolves around certain topics or identities.
In November of 2024, so far as I am aware there is pretty much only one “Bluesky instance”. As time goes on, there may eventually come to be many Bluesky instances. If you choose to “join Bluesky” in November of 2024, unless you go to great lengths to do otherwise, you will be “joining” the “default instance” of Bluesky.
What you are asked to enter into the first field is not your “Bluesky instance”, however. If you read the text carefully you catch on that what you are being asked to enter is “the domain of your Bluesky instance”. The help text explains that “this has to be a valid URL including ‘http(s)'”. The default value provided in the settings screen is “https://bsky.social”, but that couldn’t possibly be it, since I don’t presently see the character string “bsky.social” anywhere in any of my interactions with the Bluesky system.
What I have learned is that my Bluesky “share” link is https://bsky.app/profile/oppedahl.com. This made me think that my “the domain of my Bluesky instance” (that is, the answer to the first riddle) must surely be “https://bsky.app”.
Bluesky “Identifier”. The second riddle to answer is called “Bluesky “identifier”. In case you need more information, you can consult the help text for this field. The help text explains that this is “Your Bluesky identifier.”
At this point I realized there was no choice about it, I was going to need to figure out what my “Bluesky identifier” is. I clicked and clicked within my Bluesky account screen and I did not see any place where it said what my “identifier” is. There are some things that I suppose might possibly be my “identifier”. For example, I have what Bluesky calls a “handle”, namely “@oppedahl.com”. As mentioned above, I also have what Bluesky calls a “share”, namely “https://bsky.app/profile/oppedahl.com“. As discussed below, if a Bluesky user has set up one or more “app passwords” then each “app password” will have a respective “unique name”. It eventually seemed almost a certainty that one or another of my “unique names” would surely be the correct answer to the second riddle, namely “what is my Bluesky identifier?”
Password. The third riddle is called “password”. The help text explains that this means “my Bluesky application password.” But which of my many Bluesky passwords counts as “my Bluesky application password”?
Well, when I am logged in at Bluesky on my computer, I am logged in at https://bsky.app/settings/account. I see the letters “app” in that URL, so I figure the password that I used when I looked in at this “app” might be “my Bluesky application password” (that is to say, the answer to the third riddle). But it seems that is not the correct answer.
I recalled that I had previously created two “App passwords” in Bluesky. In case you wondered, the reason you would create an “App password” is “to sign in to other Bluesky clients without giving full access to your account or password.” So now the question is, what is an “other Bluesky client”? I absolutely do not know what counts as an “other Bluesky client”. I sort of assume that a Bluesky client must be a piece of software that permits me to view Bluesky postings. The app on my smart phone that does Bluesky things is, I’d guess, a Bluesky client. And yet when I logged in on the app on my smart phone, I did not use either of my two “app passwords”. I used my main Bluesky password.
What about Share on Bluesky? Is that a “Bluesky client”? I absolutely don’t know. It seems to me that the way you would know if something is a “Bluesky client” is if it requires a “unique name” (that matches whichever “app password” I am using at the moment) as the login. As will be discussed below, it eventually turned out that neither of my two “unique names” ever did work for Share on Bluesky so that suggests that Share on Bluesky must not be a “Bluesky client”.
As mentioned above, I had previously created two “app passwords” in Bluesky. Each “Aap password” has a “unique name” associated with it. So at this point I assumed (it turns out incorrectly) that the “unique name” must be my “Bluesky identifier” for purposes of the second riddle.
The thing is, I also have what I call my “Bluesky password”. This is the password that I used when I created my Bluesky account in the first place. But it seems to me that the whole point of the “app password” is to give less-than-all access to things like Share on Bluesky. We want to give just barely enough authorization to Share on Bluesky that it can do what it needs to do (namely sharing a post) while avoiding revealing my main Bluesky password to Share on Bluesky.
The thing is, if I am going to use one or another of my “app passwords” as the way of giving some limited authorization to Share on Bluesky to do its work, surely what I need to do is as well is to provide the matching “unique name” to Share on Bluesky, right? These things come in pairs! Each “unique name” has an associated “app password” and surely the only way that the Bluesky system would be able to make sense of any given “app password” is if it is being proffered in connection with its associated “unique name”.
So the way I answered my three riddles was:
-
- Bluesky domain: I used the domain from my Bluesky URL, namely “https://bsky.app”.
- Passwords. I selected one of my “app passwords”.
- Bluesky identifier. I used the “unique name” associated with the “app password” that I had selected.
Having filled in all three fields with the answers to the three riddles, I clicked “Save Changes”.
Now you might think that maybe the plugin would provide a sort of a “test” button. This would ideally be some button that you could push and you would get a smiley face or a frowny face. It would give you a smiley face if your answers to the three riddles were all satisfactory — if you had indeed successfully configured things so that your next blog post would get shared on Bluesky. It would give you a frowny face if one, or two, or all three of your answers to the three riddles somehow fell short of what was needed.
Ideally, a frowny face would also provide some clue to which riddle or riddles had not been answered satisfactorily.
As a first example, suppose that the answer I gave to the “Bluesky domain” riddle was not actually a real functioning Bluesky domain? Why not come out and say this? (In this case, my guess of “https://bsky.app” was, I speculate, not really an actual Bluesky domain, in which case it would have been a big help if there had been some error message along the lines of “you dummy there is no such Bluesky domain – try something else like maybe https://bsky.social”.)
As a second example, suppose the answer I gave to the “Bluesky domain” riddle was actually a real functioning Bluesky domain, and suppose the failure on my part was that the answer I gave to the “Bluesky identifier” riddle was not actually a real functioning Bluesky identifier on that Bluesky domain? Why not come out and say this? (In this case, my guess of “@oppedahl.com” was I guess wrong because I somehow had to know to trim off the at sign.)
As a third example, suppose the answers to the first and second riddles were actually okay, but the failure on my part was with the third riddle (the password). Why not come out and say this?
But no, there is no “test” button as such.
So far as I was able to see, the only way to actually test the setup was … wait for it … post a blog article. And then go over to Bluesky and see if it looks like you have shared the blog article on Bluesky.
This is a sort of crude way to test things. I found myself reduced to having to create a sort of test post with a title of “test number 11, please ignore” and with a body of “this is test number 11, please ignore”. This kind of test is rather embarrassing since it gets emailed to all of the thousand or so people who are subscribed to my blog, and it ends up in the feeds of the many Mastodon users who have followed my blog.
I’ll mention now that there is a sort of way that you can sort of find out whether you did or did not answer all of the three riddles satisfactorily, but it is undocumented. I’ll get to that later.
Anyway, I did several tests, using the three riddle answers described above, and none of them worked.
I then started more or less randomly trying other answers to the three riddles.
For example, maybe “Bluesky identifier” is supposed to be my Bluesky URL, namely https://bsky.app/profile/oppedahl.com. Nope. That did not seem to work. Maybe “Bluesky identifier” is supposed to be my Bluesky handle, namely @oppedahl.com. Nope. That did not seem to work. I tried “oppedahl.com” and that did not work.
Eventually, clicking around on the Internet, I found a WordPress user group where somebody said the correct answer to the first riddle was probably “https://bsky.social” instead of the domain of my Bluesky URL (“https://bsky.app”). That did not work either, at least not work if I answered the second riddle with my “unique name” associated with my “app password”. Nor did it work if I answered the second riddle with my Bluesky URL or with my Bluesky handle.
Eventually by clicking around in that WordPress user group, I came to understand that in Share on Bluesky, the correct answer to the second riddle is neither the handle nor the the share. The correct answer is what you get if you remove the “@” sign from the handle. Yes, the correct answer is “oppedahl.com”.
The challenge here is that you have to get the answers to all three riddles right, at the same time. There is no such thing as incremental progress. If there is any defect in any answer to any of the three riddles, then it will fail but in a way that gives no clue as to which riddle had been answered incorrectly.
Now to return to the undocumented way of doing the equivalent of a “test” button.
It will be recalled that in the “settings” page for Share on Bluesky there is a cryptic line of text at the bottom: “Debug Informations”. In general, whenever I would click on “Debug Informations”, I would get three empty fields.
There is no way you would know this unless somebody were to tell you, but this is how you can find out whether you did or did not answer the three riddles satisfactorily. Yes! If you click on “Debug Informations” and if the three fields are empty, this means you answered at least one of the three riddles unsatisfactorily. If you click on “Debug Informations” and if the three fields are non-empty, this means you did answer the three riddles satisfactorily.
What do these three fields mean? I gather that DID means “a persistent, long-term identifier for me.” I gather that the “access token” is a thing that Share on Bluesky uses to identify itself to Bluesky in a way that proves that it has authority to speak for me for purposes of sharing a posting. And I gather that “refresh token” is a thing that Share on Bluesky uses once a week to go and get a new access token. So I guess if I were to wait ten days and then go to the trouble to look at the “debug informations” again, I would see a different value for the “access token”.
But you don’t actually have to know what the three fields mean. It is enough to know that if all three fields are empty, then you answered at least one of the three riddles incorrectly. On the other hand, if all three fields are non-empty, then you answered all three riddles correctly, and your next blog post will get shared on Bluesky.