In Bluesky, mutual resolution of Handle, DID, etc. is often required.
Using API.
use Revolution\Bluesky\Facades\Bluesky;
$did = Bluesky::resolveHandle('***.bsky.social')->json('did');
Check DNS TXT or /.well-known/atproto-did
.
use Revolution\Bluesky\Facades\Bluesky;
$did = Bluesky::identity()->resolveHandle('alice.test');
They are similar but different.
resolveDID
returns didDoc.
https://plc.directory/did:plc:ewvi7nxzyoun6zhxrhs64oiz
use Revolution\Bluesky\Facades\Bluesky;
$didDoc = Bluesky::identity()->resolveDID('did:plc:*** or did:web:***')->json();
alsoKnownAs
in didDoc is handle.
use Revolution\Bluesky\Facades\Bluesky;
use Revolution\Bluesky\Support\DidDocument;
$didDoc = DidDocument::make(Bluesky::identity()->resolveDID('did:plc:*** or did:web:***')->json());
$handle = $didDoc->handle();
resolveIdentity
which combines resolveHandle
and resolveDID
, can resolve from either did or handle and returns didDoc.
use Revolution\Bluesky\Facades\Bluesky;
use Revolution\Bluesky\Support\DidDocument;
$didDoc = DidDocument::make(Bluesky::identity()->resolveIdentity('did or handle')->json());
$didDoc->id();
$didDoc->handle();
Public profile can be resolved from either did or handle and the response will include both did and handle.
use Revolution\Bluesky\Facades\Bluesky;
$profile = Bluesky::getProfile('did or handle');
$profile->json('did');
$profile->json('handle');
Although it is unlikely to be used directly, the serviceEndpoint
in didDoc is the PDS URL.
https://***.***.host.bsky.network
use Revolution\Bluesky\Facades\Bluesky;
use Revolution\Bluesky\Support\DidDocument;
$didDoc = DidDocument::make(Bluesky::identity()->resolveIdentity('did or handle')->json());
$didDoc->pdsUrl();
This can be solved through PDS.
If you signed up with Bluesky, this should be https://bsky.social
use Revolution\Bluesky\Facades\Bluesky;
use Revolution\Bluesky\Support\DidDocument;
$didDoc = DidDocument::make(Bluesky::identity()->resolveIdentity('did or handle')->json());
$pds = Bluesky::pds()->getProtectedResource($didDoc->pdsUrl());
$pds->authServer();