메인 콘텐츠로 건너뛰기

개요

Bluesky에서는 Handle, DID 등의 상호 해결이 빈번하게 필요합니다.

Handle에서 DID를 해결하기

API 경유

use Revolution\Bluesky\Facades\Bluesky;

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

DNS/well-known 경유

DNS TXT 레코드 또는 /.well-known/atproto-did를 확인합니다.
use Revolution\Bluesky\Facades\Bluesky;

$did = Bluesky::identity()->resolveHandle('alice.test');
두 방식은 비슷하지만 동작이 다릅니다. API 경유는 네트워크를 통해 Bluesky 서비스에 문의하지만, DNS/well-known 경유는 커스텀 도메인의 Handle 해결에 적합합니다.

DID에서 DID Document 취득

resolveDID는 DID Document를 반환합니다. https://plc.directory/did:plc:ewvi7nxzyoun6zhxrhs64oiz
use Revolution\Bluesky\Facades\Bluesky;

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

DID Document에서 Handle 취득

DID Document의 alsoKnownAs 필드에 Handle이 포함되어 있습니다.
use Revolution\Bluesky\Facades\Bluesky;
use Revolution\Bluesky\Support\DidDocument;

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

resolveIdentity를 통한 통합 해결

resolveHandleresolveDID를 조합한 resolveIdentity를 사용하면, DID나 Handle 어느 쪽에서든 해결할 수 있으며 DID Document를 반환합니다.
use Revolution\Bluesky\Facades\Bluesky;
use Revolution\Bluesky\Support\DidDocument;

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

공개 프로필 취득

공개 프로필은 DID나 Handle 어느 쪽에서든 해결할 수 있으며, 응답에 DID와 Handle이 모두 포함됩니다.
use Revolution\Bluesky\Facades\Bluesky;

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

PDS URL / serviceEndpoint 취득

DID Document의 serviceEndpoint는 PDS의 URL입니다. 직접 사용하는 경우는 적지만, 필요에 따라 취득할 수 있습니다.
https://***.***.host.bsky.network
use Revolution\Bluesky\Facades\Bluesky;
use Revolution\Bluesky\Support\DidDocument;

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

Authorization Server URL 취득

PDS를 경유하여 Authorization Server의 URL을 해결합니다. Bluesky에 등록한 계정의 경우에는 일반적으로 https://bsky.social이 됩니다.
use Revolution\Bluesky\Facades\Bluesky;
use Revolution\Bluesky\Support\DidDocument;

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

$pds = Bluesky::pds()->getProtectedResource($didDoc->pdsUrl());
$pds->authServer();
마지막 수정일 2026년 7월 13일