Rumah >hujung hadapan web >tutorial js >Bluesky OAuthlient, dengan JavaScript Vanila
Perincian siaran ini menyepadukan Pengesahan Bluesky (OAuth DPoP) ke dalam aplikasi pelanggan tanpa pelayan hanya menggunakan JavaScript Vanila. Ia adalah ilustrasi konsep, bukan contoh berfungsi sepenuhnya kerana tamat tempoh token.
Kami akan meneroka cara melaksanakan pengesahan Bluesky dalam aplikasi JavaScript tanpa bergantung pada rangka kerja luaran.
Ini ialah tutorial yang menunjukkan prosesnya. Disebabkan sifat sementara token pengesahan, ia tidak akan berfungsi sebagai contoh yang berdiri sendiri dan sentiasa berfungsi. Sila laporkan sebarang ralat.
Untuk aplikasi tanpa pelayan yang memerlukan pengesahan pengguna, kami boleh memanfaatkan kuasa pihak ketiga seperti Bluesky. Ini menggunakan protokol OAuth 2.0. Butiran lanjut tentang pelaksanaan OAuth Bluesky boleh didapati dalam dokumentasi OAuth - AT Protocol.
Untuk menggunakan pengesahan Bluesky, aplikasi kami perlu diiktiraf oleh pelayan pengesahan Bluesky. Ini dicapai melalui fail metadata pelanggan (cth., client-metadata.json
) yang mengandungi maklumat aplikasi. Ini membolehkan pendaftaran pelanggan automatik, menghapuskan keperluan untuk pendaftaran pelayan manual. Fail metadata mesti boleh diakses melalui HTTPS.
Contoh fail metadata (boleh diakses di https://www.php.cn/link/db817217c5d9b196aa39cfeb0ce889e4):
<code class="language-json">{ "client_id":"https://www.php.cn/link/db817217c5d9b196aa39cfeb0ce889e4", "application_type":"web", "grant_types":[ "authorization_code", "refresh_token" ], "scope":"atproto transition:generic transition:chat.bsky", "response_types":[ "code id_token", "code" ], "redirect_uris":[ "https://madrilenyer.neocities.org/bsky/oauth/callback/" ], "dpop_bound_access_tokens":true, "token_endpoint_auth_method":"none", "client_name":"Madrilenyer Example Browser App", "client_uri":"https://madrilenyer.neocities.org/bsky/" }</code>
Fail ini menerangkan aplikasi kami kepada pelayan pengesahan Bluesky.
Untuk mengesahkan pengguna, kami memerlukan pemegang Bluesky mereka secara minimum. Pemegangnya ialah bahagian URL profil Bluesky selepas https://bsky.app/profile/
.
Dapatkan DID: Memandangkan pemegang pengguna, kami boleh mengambil Pengecam Terpencar (DID) mereka menggunakan panggilan API (cth., https://bsky.social/xrpc/com.atproto.identity.resolveHandle?handle=<handle>
).
Dapatkan Dokumen JPS: Menggunakan JPS, kami mendapatkan semula Dokumen JPS daripada API PLC (https://plc.directory/<did>
). Dokumen ini mengandungi URL PDS (Pelayan Data Peribadi) pengguna.
Dapatkan Metadata PDS: URL PDS (serviceEndpoint
dalam Dokumen JPS) digunakan untuk mengambil metadata PDS daripada /.well-known/oauth-protected-resource
. Metadata ini menyediakan URL pelayan kebenaran.
Penemuan Pelayan Kebenaran: URL pelayan kebenaran digunakan untuk mendapatkan semula metadatanya daripada /.well-known/oauth-authorization-server
. Metadata ini mengandungi titik akhir penting seperti titik akhir kebenaran, titik akhir token dan titik akhir permintaan kebenaran ditolak (PAR).
Langkah seterusnya melibatkan penggunaan titik akhir yang ditemui dan PKCE (Kunci Bukti untuk Pertukaran Kod) untuk mendapatkan token akses pengguna, proses yang melibatkan permintaan PAR, DPoP (Demonstrate Bukti Pemilikan) untuk keselamatan yang dipertingkatkan dan pengendalian ubah hala. Kod Javascript terperinci untuk langkah-langkah ini, walaupun diketepikan untuk ringkasnya, akan melibatkan membuat beberapa panggilan API dan mengendalikan respons. Pelanggan Bluesky TypeScript rasmi ialah alternatif yang lebih mantap dan disyorkan untuk aplikasi pengeluaran.
Atas ialah kandungan terperinci Bluesky OAuthlient, dengan JavaScript Vanila. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!