Zum Hauptinhalt springen

Überblick

In Bluesky ist häufig die wechselseitige Auflösung von Handle und DID erforderlich.

DID aus einem Handle auflösen

Über die API

use Revolution\Bluesky\Facades\Bluesky;

$did = Bluesky::resolveHandle('***.bsky.social')->json('did');

Über DNS/well-known

Prüft einen DNS-TXT-Record oder /.well-known/atproto-did.
use Revolution\Bluesky\Facades\Bluesky;

$did = Bluesky::identity()->resolveHandle('alice.test');
Die beiden Wege sind ähnlich, verhalten sich aber unterschiedlich. Über die API wird der Bluesky-Dienst übers Netzwerk angefragt; der DNS-/well-known-Weg eignet sich hingegen für die Auflösung von Handles auf eigenen Domains.

DID-Document aus einer DID abrufen

resolveDID gibt das DID-Document zurück. https://plc.directory/did:plc:ewvi7nxzyoun6zhxrhs64oiz
use Revolution\Bluesky\Facades\Bluesky;

$didDoc = Bluesky::identity()->resolveDID('did:plc:*** oder did:web:***')->json();

Handle aus einem DID-Document ermitteln

Das Feld alsoKnownAs im DID-Document enthält das Handle.
use Revolution\Bluesky\Facades\Bluesky;
use Revolution\Bluesky\Support\DidDocument;

$didDoc = DidDocument::make(Bluesky::identity()->resolveDID('did:plc:*** oder did:web:***')->json());
$handle = $didDoc->handle();

Kombinierte Auflösung mit resolveIdentity

Mit resolveIdentity, einer Kombination aus resolveHandle und resolveDID, können Sie sowohl von einer DID als auch von einem Handle aus auflösen und erhalten das DID-Document.
use Revolution\Bluesky\Facades\Bluesky;
use Revolution\Bluesky\Support\DidDocument;

$didDoc = DidDocument::make(Bluesky::identity()->resolveIdentity('did oder handle')->json());
$didDoc->id();
$didDoc->handle();

Öffentliches Profil abrufen

Das öffentliche Profil lässt sich sowohl per DID als auch per Handle auflösen; die Antwort enthält sowohl DID als auch Handle.
use Revolution\Bluesky\Facades\Bluesky;

$profile = Bluesky::getProfile('did oder handle');
$profile->json('did');
$profile->json('handle');

PDS-URL / serviceEndpoint abrufen

Das serviceEndpoint im DID-Document ist die URL des PDS. Sie wird selten direkt benötigt, kann bei Bedarf aber abgerufen werden.
https://***.***.host.bsky.network
use Revolution\Bluesky\Facades\Bluesky;
use Revolution\Bluesky\Support\DidDocument;

$didDoc = DidDocument::make(Bluesky::identity()->resolveIdentity('did oder handle')->json());
$didDoc->pdsUrl();

URL des Authorization Servers abrufen

Über den PDS wird die URL des Authorization Servers aufgelöst. Für in Bluesky registrierte Accounts ist dies üblicherweise https://bsky.social.
use Revolution\Bluesky\Facades\Bluesky;
use Revolution\Bluesky\Support\DidDocument;

$didDoc = DidDocument::make(Bluesky::identity()->resolveIdentity('did oder handle')->json());

$pds = Bluesky::pds()->getProtectedResource($didDoc->pdsUrl());
$pds->authServer();
Zuletzt geändert am 13. Juli 2026