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

Bluesky OAuthlient, dengan JavaScript Vanila

Susan Sarandon
Lepaskan: 2025-01-22 08:34:10
asal
506 orang telah melayarinya

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):

{
  "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/"
}
Salin selepas log masuk

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 Laman Web ini
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 terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan