Rumah >hujung hadapan web >tutorial js >Bluesky OAuthlient, dengan JavaScript Vanila

Bluesky OAuthlient, dengan JavaScript Vanila

Susan Sarandon
Susan Sarandonasal
2025-01-22 08:34:10463semak imbas

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.

Bluesky OAuthlient, with Vanilla JavaScript

Pengenalan

Kami akan meneroka cara melaksanakan pengesahan Bluesky dalam aplikasi JavaScript tanpa bergantung pada rangka kerja luaran.

Penafian

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.

Pengesahan OAuth

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.

Metadata Pelanggan

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.

Keperluan Pengesahan Teras

Untuk mengesahkan pengguna, kami memerlukan pemegang Bluesky mereka secara minimum. Pemegangnya ialah bahagian URL profil Bluesky selepas https://bsky.app/profile/.

Mengambil Data Pengguna

  1. 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>).

  2. 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.

  3. 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.

  4. 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Rangka Kerja Web: Masa DepanArtikel seterusnya:Rangka Kerja Web: Masa Depan