> ## 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

> Comment résoudre mutuellement les Handles et DIDs Bluesky. Récapitulatif des opérations via Bluesky::identity().

## Vue d'ensemble

Sur Bluesky, la résolution mutuelle entre Handle et DID est très fréquente.

* [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)

## Résoudre un DID depuis un Handle

### Via l'API

```php theme={null}
use Revolution\Bluesky\Facades\Bluesky;

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

### Via DNS / well-known

Consulte l'enregistrement TXT DNS ou `/.well-known/atproto-did`.

```php theme={null}
use Revolution\Bluesky\Facades\Bluesky;

$did = Bluesky::identity()->resolveHandle('alice.test');
```

Les deux approches se ressemblent mais ont des comportements différents. L'API interroge le service Bluesky par le réseau, tandis que DNS / well-known est adapté à la résolution de Handles sur domaine personnalisé.

## Récupérer un DID Document depuis un DID

`resolveDID` renvoie un DID Document.

[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:*** ou did:web:***')->json();
```

## Récupérer le Handle depuis un DID Document

Le Handle figure dans le champ `alsoKnownAs` du DID Document.

```php theme={null}
use Revolution\Bluesky\Facades\Bluesky;
use Revolution\Bluesky\Support\DidDocument;

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

## Résolution unifiée via resolveIdentity

`resolveIdentity`, qui combine `resolveHandle` et `resolveDID`, permet de résoudre à partir d'un DID ou d'un Handle et renvoie le DID Document.

```php theme={null}
use Revolution\Bluesky\Facades\Bluesky;
use Revolution\Bluesky\Support\DidDocument;

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

## Récupération du profil public

Le profil public peut être résolu à partir d'un DID ou d'un Handle, et la réponse contient à la fois le DID et le Handle.

```php theme={null}
use Revolution\Bluesky\Facades\Bluesky;

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

## Récupération de l'URL PDS / serviceEndpoint

Le champ `serviceEndpoint` du DID Document correspond à l'URL du PDS. On l'utilise rarement directement, mais on peut le récupérer si besoin.

```
https://***.***.host.bsky.network
```

```php theme={null}
use Revolution\Bluesky\Facades\Bluesky;
use Revolution\Bluesky\Support\DidDocument;

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

## Récupération de l'URL du serveur d'autorisation

Résout l'URL du serveur d'autorisation via le PDS.

Pour un compte enregistré sur Bluesky, il s'agit généralement de `https://bsky.social`.

```php theme={null}
use Revolution\Bluesky\Facades\Bluesky;
use Revolution\Bluesky\Support\DidDocument;

$didDoc = DidDocument::make(Bluesky::identity()->resolveIdentity('did ou 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 et HasShortHand](/fr/packages/laravel-bluesky/bluesky-manager.md)
- [Crypto — chiffrement AT Protocol](/fr/packages/laravel-bluesky/crypto.md)
- [WebSocket (Jetstream / Firehose)](/fr/packages/laravel-bluesky/websocket.md)
