> ## Documentation Index
> Fetch the complete documentation index at: https://kawax.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# Identity

> Wechselseitige Auflösung von Handle und DID in Bluesky. Zusammenfassung der Operationen über Bluesky::identity().

## Überblick

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

* [https://docs.bsky.app/docs/advanced-guides/resolving-identities](https://docs.bsky.app/docs/advanced-guides/resolving-identities)
* [https://atproto.com/guides/identity](https://atproto.com/guides/identity)

## DID aus einem Handle auflösen

### Über die API

```php theme={null}
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`.

```php theme={null}
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](https://plc.directory/did:plc:ewvi7nxzyoun6zhxrhs64oiz)

```php theme={null}
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.

```php theme={null}
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.

```php theme={null}
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.

```php theme={null}
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
```

```php theme={null}
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`.

```php theme={null}
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();
```

<Info>
  Source: [docs/identity.md](https://github.com/invokable/laravel-bluesky/blob/main/docs/identity.md)
</Info>


## Related topics

- [BlueskyManager und HasShortHand](/de/packages/laravel-bluesky/bluesky-manager.md)
- [WebSocket (Jetstream / Firehose)](/de/packages/laravel-bluesky/websocket.md)
- [Crypto – Kryptografie im AT Protocol](/de/packages/laravel-bluesky/crypto.md)
