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

> Cómo resolver Handles y DIDs entre sí en Bluesky. Recopilamos las operaciones que se realizan con Bluesky::identity().

## Descripción general

En Bluesky es frecuente necesitar resolver Handles y DIDs entre sí.

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

## Resolver un DID a partir del Handle

### Vía API

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

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

### Vía DNS/well-known

Consulta el registro DNS TXT o `/.well-known/atproto-did`.

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

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

Las dos formas son parecidas pero se comportan de manera distinta. La vía API consulta al servicio de Bluesky por red, mientras que la vía DNS/well-known es adecuada para resolver Handles con dominio personalizado.

## Obtener el DID Document a partir del DID

`resolveDID` devuelve el 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();
```

## Obtener el Handle desde el DID Document

El campo `alsoKnownAs` del DID Document contiene el 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();
```

## Resolución unificada con resolveIdentity

Con `resolveIdentity`, que combina `resolveHandle` y `resolveDID`, puedes resolver tanto desde el DID como desde el Handle y obtener el 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();
```

## Obtener el perfil público

El perfil público puede resolverse tanto desde el DID como desde el Handle y la respuesta incluye ambos, DID y Handle.

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

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

## Obtener la URL del PDS / serviceEndpoint

El `serviceEndpoint` del DID Document es la URL del PDS. Rara vez se utiliza directamente, pero puedes obtenerlo cuando lo necesites.

```
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();
```

## Obtener la URL del Authorization Server

Se resuelve la URL del Authorization Server pasando por el PDS.

Para las cuentas registradas en Bluesky suele ser `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 y HasShortHand](/es/packages/laravel-bluesky/bluesky-manager.md)
- [WebSocket (Jetstream / Firehose)](/es/packages/laravel-bluesky/websocket.md)
- [Crypto — criptografía de AT Protocol](/es/packages/laravel-bluesky/crypto.md)
