ATProto Browser

ATProto Browser

Experimental browser for the Atmosphere

Post

I didn't have a lot of time to dig yet, but this might help a little. It's at least a good "place to start" digging more. github.com/graze-social...

May 1, 2025, 11:17 PM

Record data

{
  "uri": "at://did:plc:moykpa7c7np5xyxt4xhdseji/app.bsky.feed.post/3lo5gyujspk2g",
  "cid": "bafyreiffndfxedhqwztgwxa5t3sqlhaalpodl2x7zok4mzvwqcd4geoba4",
  "value": {
    "text": "I didn't have a lot of time to dig yet, but this might help a little.  It's at least a good \"place to start\" digging more. \n\ngithub.com/graze-social...",
    "$type": "app.bsky.feed.post",
    "embed": {
      "$type": "app.bsky.embed.images",
      "images": [
        {
          "alt": "\"\"\"\nAT Protocol OAuth Handlers\n\nThis module implements the web request handlers for OAuth authentication with AT Protocol.\nIt provides endpoints for initiating authentication, handling callbacks from the AT Protocol\nauthorization server, refreshing tokens, and debugging authentication information.\n\nOAuth Flow with AT Protocol:\n1. User enters their handle/DID in the login form\n2. Application initiates OAuth flow by redirecting to AT Protocol authorization server\n3. User authenticates with their AT Protocol PDS (Personal Data Server)\n4. PDS redirects back to the application with an authorization code\n5. Application exchanges the code for access and refresh tokens\n6. Application stores tokens and returns an auth token to the client\n7. Tokens are refreshed before they expire\n\nThe handlers in this module provide the following endpoints:\n- GET /auth/atproto - Login form for entering AT Protocol handle/DID\n- POST /auth/atproto - Submit login form to initiate OAuth flow\n- GET /auth/atproto/callback - OAuth callback from AT Protocol authorization server\n- GET /auth/atproto/refresh - Manually refresh tokens\n- GET /auth/atproto/debug - Display debug information about authentication\n- GET /.well-known/jwks.json - JWKS endpoint for key verification\n- GET /auth/atproto/client-metadata.json - OAuth client metadata\n\"\"\"",
          "image": {
            "$type": "blob",
            "ref": {
              "$link": "bafkreianrauw7enw6ytv6eo2f5jcuqiq3cboeuocawwbcbwujovmkiwfzy"
            },
            "mimeType": "image/jpeg",
            "size": 276123
          },
          "aspectRatio": {
            "width": 790,
            "height": 548
          }
        }
      ]
    },
    "langs": [
      "en"
    ],
    "reply": {
      "root": {
        "cid": "bafyreiatymdsohgzyyxgj7bvfm3xua42xei7vzrqf4sakldzd7d3ojllcm",
        "uri": "at://did:plc:cbkjy5n7bk3ax2wplmtjofq2/app.bsky.feed.post/3lo573z4v2k23"
      },
      "parent": {
        "cid": "bafyreia235e22aosiyae6cp4pbkbc2hfd6myhaoen6hump5dkqo7vw7zh4",
        "uri": "at://did:plc:5w4eqcxzw5jv5qfnmzxcakfy/app.bsky.feed.post/3lo5guny6gs2e"
      }
    },
    "facets": [
      {
        "index": {
          "byteEnd": 151,
          "byteStart": 125
        },
        "features": [
          {
            "uri": "https://github.com/graze-social/aip/blob/main/src/social/graze/aip/app/handlers/oauth.py",
            "$type": "app.bsky.richtext.facet#link"
          }
        ]
      }
    ],
    "createdAt": "2025-05-01T23:17:43.438Z"
  }
}