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

> Come risolvere reciprocamente handle e DID di Bluesky. Riepilogo delle operazioni tramite Bluesky::identity().

## Panoramica

Su Bluesky è frequente aver bisogno di risolvere reciprocamente handle, DID, ecc.

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

## Risolvere un DID dall'handle

### Tramite API

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

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

### Tramite DNS/well-known

Verifica un record DNS TXT o `/.well-known/atproto-did`.

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

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

I due metodi sembrano simili ma hanno comportamenti diversi. Quello tramite API interroga il servizio Bluesky via rete, mentre quello tramite DNS/well-known è più adatto a risolvere handle su dominio personalizzato.

## Ottenere il DID Document da un DID

`resolveDID` restituisce il 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:*** o did:web:***')->json();
```

## Ottenere l'handle dal DID Document

Il campo `alsoKnownAs` del DID Document contiene l'handle.

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

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

## Risoluzione unificata con resolveIdentity

Con `resolveIdentity`, che combina `resolveHandle` e `resolveDID`, puoi risolvere partendo sia da un DID che da un handle e ottenere il DID Document.

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

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

## Recupero del profilo pubblico

Il profilo pubblico può essere risolto sia da DID che da handle, e la risposta contiene sia DID che handle.

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

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

## Ottenere l'URL del PDS / serviceEndpoint

Il `serviceEndpoint` del DID Document è l'URL del PDS. Raramente lo si usa direttamente, ma se serve puoi ottenerlo.

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

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

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

## Ottenere l'URL dell'Authorization Server

Attraverso il PDS risolvi l'URL dell'Authorization Server.

Per un account registrato su Bluesky è tipicamente `https://bsky.social`.

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

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