搜尋
首頁web前端js教程Bluesky OAuthlient,使用 Vanilla JavaScript

這篇文章詳細介紹了僅使用 Vanilla JavaScript 將 Bluesky Authentication (OAuth DPoP) 整合到無伺服器客戶端應用程式中。 由於令牌過期,這是一個概念圖,而不是一個功能齊全的範例。

Bluesky OAuthlient, with Vanilla JavaScript

簡介

我們將探索如何在 JavaScript 應用程式中實作 Bluesky 身份驗證,而不依賴外部框架。

免責聲明

這是一個示範該過程的教學。 由於身份驗證令牌的短暫性,它不能作為獨立、永久工作的範例。 請報告任何錯誤。

OAuth 驗證

對於需要用戶身份驗證的無伺服器應用程序,我們可以利用 Bluesky 等第三方權威機構。 這使用 OAuth 2.0 協定。 有關 Bluesky OAuth 實現的更多詳細信息,請參閱 OAuth - AT 協議文件。

客戶端元資料

要使用 Bluesky 驗證,我們的應用程式需要被 Bluesky 的身份驗證伺服器識別。這是透過包含應用程式資訊的客戶端元資料檔案(例如 client-metadata.json)來實現的。 這允許自動客戶端註冊,無需手動伺服器註冊。 元資料檔案必須可透過 HTTPS 存取。

範例元資料檔(可在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/"
}

此檔案描述了我們在 Bluesky 驗證伺服器上的應用程式。

核心驗證要求

要對使用者進行身份驗證,我們至少需要他們的 Bluesky 句柄。 該句柄是 Bluesky 個人資料 URL 中 https://bsky.app/profile/.

之後的部分

檢索使用者資料

  1. 檢索 DID:給定使用者的句柄,我們可以使用 API 呼叫(例如 https://bsky.social/xrpc/com.atproto.identity.resolveHandle?handle=<handle></handle>)來取得他們的去中心化識別碼 (DID)。

  2. 檢索 DID 文件: 使用 DID,我們從 PLC API (https://plc.directory/<did></did>) 檢索 DID 文件。 此文件包含使用者的 PDS(個人資料伺服器)URL。

  3. 檢索 PDS 元資料: PDS URL(DID 文件中的 serviceEndpoint)用於從 /.well-known/oauth-protected-resource 取得 PDS 元資料。此元資料提供授權伺服器 URL。

  4. 授權伺服器發現: 授權伺服器 URL 用於從​​ /.well-known/oauth-authorization-server 檢索其元資料。 此元資料包含關鍵端點,例如授權端點、令牌端點和推送授權請求 (PAR) 端點。

後續步驟涉及使用發現的端點和 PKCE(代碼交換證明金鑰)獲取使用者的存取權杖、涉及 PAR 請求的過程、用於增強安全性的 DPoP(演示所有權證明)以及處理重定向。 雖然為簡潔起見而省略了這些步驟的詳細 Javascript 程式碼,但它們將涉及進行多個 API 呼叫並處理回應。 官方 Bluesky TypeScript 用戶端是生產應用程式的更強大且推薦的替代方案。

以上是Bluesky OAuthlient,使用 Vanilla JavaScript的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
JavaScript數據類型:瀏覽器和nodejs之間是否有區別?JavaScript數據類型:瀏覽器和nodejs之間是否有區別?May 14, 2025 am 12:15 AM

JavaScript核心數據類型在瀏覽器和Node.js中一致,但處理方式和額外類型有所不同。 1)全局對像在瀏覽器中為window,在Node.js中為global。 2)Node.js獨有Buffer對象,用於處理二進制數據。 3)性能和時間處理在兩者間也有差異,需根據環境調整代碼。

JavaScript評論:使用//和 / * * / * / * /JavaScript評論:使用//和 / * * / * / * /May 13, 2025 pm 03:49 PM

JavaScriptusestwotypesofcomments:single-line(//)andmulti-line(//).1)Use//forquicknotesorsingle-lineexplanations.2)Use//forlongerexplanationsorcommentingoutblocksofcode.Commentsshouldexplainthe'why',notthe'what',andbeplacedabovetherelevantcodeforclari

Python vs. JavaScript:開發人員的比較分析Python vs. JavaScript:開發人員的比較分析May 09, 2025 am 12:22 AM

Python和JavaScript的主要區別在於類型系統和應用場景。 1.Python使用動態類型,適合科學計算和數據分析。 2.JavaScript採用弱類型,廣泛用於前端和全棧開發。兩者在異步編程和性能優化上各有優勢,選擇時應根據項目需求決定。

Python vs. JavaScript:選擇合適的工具Python vs. JavaScript:選擇合適的工具May 08, 2025 am 12:10 AM

選擇Python還是JavaScript取決於項目類型:1)數據科學和自動化任務選擇Python;2)前端和全棧開發選擇JavaScript。 Python因其在數據處理和自動化方面的強大庫而備受青睞,而JavaScript則因其在網頁交互和全棧開發中的優勢而不可或缺。

Python和JavaScript:了解每個的優勢Python和JavaScript:了解每個的優勢May 06, 2025 am 12:15 AM

Python和JavaScript各有優勢,選擇取決於項目需求和個人偏好。 1.Python易學,語法簡潔,適用於數據科學和後端開發,但執行速度較慢。 2.JavaScript在前端開發中無處不在,異步編程能力強,Node.js使其適用於全棧開發,但語法可能複雜且易出錯。

JavaScript的核心:它是在C還是C上構建的?JavaScript的核心:它是在C還是C上構建的?May 05, 2025 am 12:07 AM

javascriptisnotbuiltoncorc; sanInterpretedlanguagethatrunsonenginesoftenwritteninc.1)JavascriptwasdesignedAsignedAsalightWeight,drackendedlanguageforwebbrowsers.2)Enginesevolvedfromsimpleterterpretpretpretpretpreterterpretpretpretpretpretpretpretpretpretcompilerers,典型地,替代品。

JavaScript應用程序:從前端到後端JavaScript應用程序:從前端到後端May 04, 2025 am 12:12 AM

JavaScript可用於前端和後端開發。前端通過DOM操作增強用戶體驗,後端通過Node.js處理服務器任務。 1.前端示例:改變網頁文本內容。 2.後端示例:創建Node.js服務器。

Python vs. JavaScript:您應該學到哪種語言?Python vs. JavaScript:您應該學到哪種語言?May 03, 2025 am 12:10 AM

選擇Python還是JavaScript應基於職業發展、學習曲線和生態系統:1)職業發展:Python適合數據科學和後端開發,JavaScript適合前端和全棧開發。 2)學習曲線:Python語法簡潔,適合初學者;JavaScript語法靈活。 3)生態系統:Python有豐富的科學計算庫,JavaScript有強大的前端框架。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具