@atproto/oauth-client-node 0.0.7 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -13
 - package/package.json +7 -8
 
    
        package/README.md
    CHANGED
    
    | 
         @@ -36,7 +36,6 @@ const client = new NodeOAuthClientOptions({ 
     | 
|
| 
       36 
36 
     | 
    
         
             
                tos_uri: 'https://my-app.com/tos',
         
     | 
| 
       37 
37 
     | 
    
         
             
                policy_uri: 'https://my-app.com/policy',
         
     | 
| 
       38 
38 
     | 
    
         
             
                redirect_uris: ['https://my-app.com/callback'],
         
     | 
| 
       39 
     | 
    
         
            -
                scope: 'profile email offline_access',
         
     | 
| 
       40 
39 
     | 
    
         
             
                grant_types: ['authorization_code', 'refresh_token'],
         
     | 
| 
       41 
40 
     | 
    
         
             
                response_types: ['code'],
         
     | 
| 
       42 
41 
     | 
    
         
             
                application_type: 'web',
         
     | 
| 
         @@ -105,12 +104,14 @@ app.get('/atproto-oauth-callback', async (req, res, next) => { 
     | 
|
| 
       105 
104 
     | 
    
         
             
              try {
         
     | 
| 
       106 
105 
     | 
    
         
             
                const params = new URLSearchParams(req.url.split('?')[1])
         
     | 
| 
       107 
106 
     | 
    
         | 
| 
       108 
     | 
    
         
            -
                const {  
     | 
| 
      
 107 
     | 
    
         
            +
                const { session, state } = await client.callback(params)
         
     | 
| 
       109 
108 
     | 
    
         | 
| 
       110 
109 
     | 
    
         
             
                // Process successful authentication here
         
     | 
| 
       111 
110 
     | 
    
         
             
                console.log('authorize() was called with state:', state)
         
     | 
| 
       112 
111 
     | 
    
         | 
| 
       113 
     | 
    
         
            -
                console.log('User authenticated as:',  
     | 
| 
      
 112 
     | 
    
         
            +
                console.log('User authenticated as:', session.did)
         
     | 
| 
      
 113 
     | 
    
         
            +
             
     | 
| 
      
 114 
     | 
    
         
            +
                const agent = new Agent(session)
         
     | 
| 
       114 
115 
     | 
    
         | 
| 
       115 
116 
     | 
    
         
             
                // Make Authenticated API calls
         
     | 
| 
       116 
117 
     | 
    
         
             
                const profile = await agent.getProfile({ actor: agent.did })
         
     | 
| 
         @@ -126,12 +127,14 @@ app.get('/atproto-oauth-callback', async (req, res, next) => { 
     | 
|
| 
       126 
127 
     | 
    
         
             
            async function worker() {
         
     | 
| 
       127 
128 
     | 
    
         
             
              const userDid = 'did:plc:123'
         
     | 
| 
       128 
129 
     | 
    
         | 
| 
       129 
     | 
    
         
            -
              const  
     | 
| 
      
 130 
     | 
    
         
            +
              const oauthSession = await client.restore(userDid)
         
     | 
| 
       130 
131 
     | 
    
         | 
| 
       131 
     | 
    
         
            -
              // Note: If the current access_token is expired, the  
     | 
| 
      
 132 
     | 
    
         
            +
              // Note: If the current access_token is expired, the session will automatically
         
     | 
| 
       132 
133 
     | 
    
         
             
              // (and transparently) refresh it. The new token set will be saved though
         
     | 
| 
       133 
134 
     | 
    
         
             
              // the client's session store.
         
     | 
| 
       134 
135 
     | 
    
         | 
| 
      
 136 
     | 
    
         
            +
              const agent = new Agent(oauthSession)
         
     | 
| 
      
 137 
     | 
    
         
            +
             
     | 
| 
       135 
138 
     | 
    
         
             
              // Make Authenticated API calls
         
     | 
| 
       136 
139 
     | 
    
         
             
              const profile = await agent.getProfile({ actor: agent.did })
         
     | 
| 
       137 
140 
     | 
    
         
             
              console.log('Bsky profile:', profile.data)
         
     | 
| 
         @@ -154,7 +157,7 @@ The client metadata will typically contain: 
     | 
|
| 
       154 
157 
     | 
    
         
             
              "tos_uri": "https://my-app.com/tos",
         
     | 
| 
       155 
158 
     | 
    
         
             
              "policy_uri": "https://my-app.com/policy",
         
     | 
| 
       156 
159 
     | 
    
         
             
              "redirect_uris": ["https://my-app.com/atproto-oauth-callback"],
         
     | 
| 
       157 
     | 
    
         
            -
              "scope": " 
     | 
| 
      
 160 
     | 
    
         
            +
              "scope": "atproto",
         
     | 
| 
       158 
161 
     | 
    
         
             
              "grant_types": ["authorization_code", "refresh_token"],
         
     | 
| 
       159 
162 
     | 
    
         
             
              "response_types": ["code"],
         
     | 
| 
       160 
163 
     | 
    
         
             
              "application_type": "native",
         
     | 
| 
         @@ -290,7 +293,8 @@ list of examples below). Any refresh of the credentials will happen under the 
     | 
|
| 
       290 
293 
     | 
    
         
             
            hood, and the new tokens will be saved in the session store.
         
     | 
| 
       291 
294 
     | 
    
         | 
| 
       292 
295 
     | 
    
         
             
            ```ts
         
     | 
| 
       293 
     | 
    
         
            -
            const  
     | 
| 
      
 296 
     | 
    
         
            +
            const session = await client.restore('did:plc:123')
         
     | 
| 
      
 297 
     | 
    
         
            +
            const agent = new Agent(session)
         
     | 
| 
       294 
298 
     | 
    
         | 
| 
       295 
299 
     | 
    
         
             
            // Feeds and content
         
     | 
| 
       296 
300 
     | 
    
         
             
            await agent.getTimeline(params, opts)
         
     | 
| 
         @@ -339,9 +343,8 @@ await agent.updateHandle(params, opts) 
     | 
|
| 
       339 
343 
     | 
    
         | 
| 
       340 
344 
     | 
    
         
             
            // etc.
         
     | 
| 
       341 
345 
     | 
    
         | 
| 
       342 
     | 
    
         
            -
             
     | 
| 
       343 
     | 
    
         
            -
             
     | 
| 
       344 
     | 
    
         
            -
            }
         
     | 
| 
      
 346 
     | 
    
         
            +
            // Always remember to revoke the credentials when you are done
         
     | 
| 
      
 347 
     | 
    
         
            +
            await session.signOut()
         
     | 
| 
       345 
348 
     | 
    
         
             
            ```
         
     | 
| 
       346 
349 
     | 
    
         | 
| 
       347 
350 
     | 
    
         
             
            ## Advances use-cases
         
     | 
| 
         @@ -379,7 +382,7 @@ client.addEventListener( 
     | 
|
| 
       379 
382 
     | 
    
         
             
                  // - session data does not match expected values returned by the OAuth server
         
     | 
| 
       380 
383 
     | 
    
         
             
                } else if (cause instanceof TokenRevokedError) {
         
     | 
| 
       381 
384 
     | 
    
         
             
                  // Session was revoked through:
         
     | 
| 
       382 
     | 
    
         
            -
                  // -  
     | 
| 
      
 385 
     | 
    
         
            +
                  // - session.signOut()
         
     | 
| 
       383 
386 
     | 
    
         
             
                  // - client.revoke(sub)
         
     | 
| 
       384 
387 
     | 
    
         
             
                } else {
         
     | 
| 
       385 
388 
     | 
    
         
             
                  // An unexpected error occurred, causing the session to be deleted
         
     | 
| 
         @@ -415,9 +418,15 @@ app.get('/atproto-oauth-callback', async (req, res) => { 
     | 
|
| 
       415 
418 
     | 
    
         
             
              const params = new URLSearchParams(req.url.split('?')[1])
         
     | 
| 
       416 
419 
     | 
    
         
             
              try {
         
     | 
| 
       417 
420 
     | 
    
         
             
                try {
         
     | 
| 
       418 
     | 
    
         
            -
                  const {  
     | 
| 
      
 421 
     | 
    
         
            +
                  const { session, state } = await client.callback(params)
         
     | 
| 
      
 422 
     | 
    
         
            +
             
     | 
| 
      
 423 
     | 
    
         
            +
                  // Process successful authentication here. For example:
         
     | 
| 
      
 424 
     | 
    
         
            +
             
     | 
| 
      
 425 
     | 
    
         
            +
                  const agent = new Agent(session)
         
     | 
| 
      
 426 
     | 
    
         
            +
             
     | 
| 
      
 427 
     | 
    
         
            +
                  const profile = await agent.getProfile({ actor: agent.did })
         
     | 
| 
       419 
428 
     | 
    
         | 
| 
       420 
     | 
    
         
            -
                   
     | 
| 
      
 429 
     | 
    
         
            +
                  console.log('Bsky profile:', profile.data)
         
     | 
| 
       421 
430 
     | 
    
         
             
                } catch (err) {
         
     | 
| 
       422 
431 
     | 
    
         
             
                  // Silent sign-in failed, retry without prompt=none
         
     | 
| 
       423 
432 
     | 
    
         
             
                  if (
         
     | 
    
        package/package.json
    CHANGED
    
    | 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            {
         
     | 
| 
       2 
2 
     | 
    
         
             
              "name": "@atproto/oauth-client-node",
         
     | 
| 
       3 
     | 
    
         
            -
              "version": "0. 
     | 
| 
      
 3 
     | 
    
         
            +
              "version": "0.1.1",
         
     | 
| 
       4 
4 
     | 
    
         
             
              "license": "MIT",
         
     | 
| 
       5 
5 
     | 
    
         
             
              "description": "ATPROTO OAuth client for the NodeJS",
         
     | 
| 
       6 
6 
     | 
    
         
             
              "keywords": [
         
     | 
| 
         @@ -28,19 +28,18 @@ 
     | 
|
| 
       28 
28 
     | 
    
         
             
                "dist"
         
     | 
| 
       29 
29 
     | 
    
         
             
              ],
         
     | 
| 
       30 
30 
     | 
    
         
             
              "dependencies": {
         
     | 
| 
       31 
     | 
    
         
            -
                "@atproto-labs/did-resolver": "0.1. 
     | 
| 
       32 
     | 
    
         
            -
                "@atproto-labs/handle-resolver-node": "0.1. 
     | 
| 
      
 31 
     | 
    
         
            +
                "@atproto-labs/did-resolver": "0.1.3",
         
     | 
| 
      
 32 
     | 
    
         
            +
                "@atproto-labs/handle-resolver-node": "0.1.3",
         
     | 
| 
       33 
33 
     | 
    
         
             
                "@atproto-labs/simple-store": "0.1.1",
         
     | 
| 
       34 
     | 
    
         
            -
                "@atproto/did": "0.1. 
     | 
| 
      
 34 
     | 
    
         
            +
                "@atproto/did": "0.1.2",
         
     | 
| 
       35 
35 
     | 
    
         
             
                "@atproto/jwk": "0.1.1",
         
     | 
| 
       36 
36 
     | 
    
         
             
                "@atproto/jwk-jose": "0.1.2",
         
     | 
| 
       37 
37 
     | 
    
         
             
                "@atproto/jwk-webcrypto": "0.1.2",
         
     | 
| 
       38 
     | 
    
         
            -
                "@atproto/oauth-client": "0.1 
     | 
| 
       39 
     | 
    
         
            -
                "@atproto/oauth-types": "0.1. 
     | 
| 
      
 38 
     | 
    
         
            +
                "@atproto/oauth-client": "0.2.1",
         
     | 
| 
      
 39 
     | 
    
         
            +
                "@atproto/oauth-types": "0.1.4"
         
     | 
| 
       40 
40 
     | 
    
         
             
              },
         
     | 
| 
       41 
41 
     | 
    
         
             
              "devDependencies": {
         
     | 
| 
       42 
     | 
    
         
            -
                "typescript": "^5.3.3" 
     | 
| 
       43 
     | 
    
         
            -
                "@atproto/api": "0.13.3"
         
     | 
| 
      
 42 
     | 
    
         
            +
                "typescript": "^5.3.3"
         
     | 
| 
       44 
43 
     | 
    
         
             
              },
         
     | 
| 
       45 
44 
     | 
    
         
             
              "scripts": {
         
     | 
| 
       46 
45 
     | 
    
         
             
                "build": "tsc --build tsconfig.build.json"
         
     |