https://github.com/octokit/auth-callback.js
GitHub API authentication using a callback method
https://github.com/octokit/auth-callback.js
hacktoberfest octokit-js plugin
Last synced: 9 months ago
JSON representation
GitHub API authentication using a callback method
- Host: GitHub
- URL: https://github.com/octokit/auth-callback.js
- Owner: octokit
- License: mit
- Created: 2020-11-07T19:48:09.000Z (about 5 years ago)
- Default Branch: main
- Last Pushed: 2025-04-08T21:35:52.000Z (9 months ago)
- Last Synced: 2025-04-08T22:28:50.643Z (9 months ago)
- Topics: hacktoberfest, octokit-js, plugin
- Language: TypeScript
- Homepage:
- Size: 1.94 MB
- Stars: 4
- Watchers: 6
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
Awesome Lists containing this project
README
# auth-callback.js
> GitHub API authentication using a callback method
[](https://www.npmjs.com/package/@octokit/auth-callback)
[](https://github.com/octokit/auth-callback.js/actions?query=workflow%3ATest+branch%3Amain)
## Usage
Browsers
Load `@octokit/auth-callback` directly from [esm.sh](https://esm.sh)
```html
import { createCallbackAuth } from "https://esm.sh/@octokit/auth-callback";
```
Node
Install with `npm install @octokit/auth-callback`
```js
import { createCallbackAuth } from "@octokit/auth-callback";
```
> [!IMPORTANT]
> As we use [conditional exports](https://nodejs.org/api/packages.html#conditional-exports), you will need to adapt your `tsconfig.json` by setting `"moduleResolution": "node16", "module": "node16"`.
>
> See the TypeScript docs on [package.json "exports"](https://www.typescriptlang.org/docs/handbook/modules/reference.html#packagejson-exports).
> See this [helpful guide on transitioning to ESM](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c) from [@sindresorhus](https://github.com/sindresorhus)
```js
let token;
const auth = createCallbackAuth({ callback: () => token });
await auth();
// {
// type: 'unauthenticated'
// }
token = "secret123";
await auth();
// {
// type: 'token',
// token: 'secret123',
// tokenType: 'oauth'
// }
```
## `createCallbackAuth(options)`
The `createCallbackAuth` method accepts a single `options` parameter
name
type
description
options.callback
function
Required. A method that returns or resolves with a token string.
## `auth()`
The async `auth()` method does not accept any arguments
## Authentication object
The async `auth()` method resolves to one of two possible authentication objects
1. **Unauthenticated** if the `callback()` returns or resolves a falsy value
2. **Token authentication** if the `callback()` returns or resolves with a string value
### Unauthenticated
name
type
description
type
string
"unauthenticated"
### Token authentication
name
type
description
type
string
"token"
token
string
The personal access token
tokenType
string
One of:
1. "oauth" (if returned string is an OAuth or personal access tokens)
2. "installation" (if returned string is an installation access tokens)
3. "app" (if returned string is a JSON Web Token (JWT) for GitHub App authentication)
## `auth.hook(request, route, parameters)` or `auth.hook(request, options)`
`auth.hook()` hooks directly into the request life cycle. It amends the request to authenticate correctly based on the request URL.
The `request` option is an instance of [`@octokit/request`](https://github.com/octokit/request.js#readme). The `route`/`options` parameters are the same as for the [`request()` method](https://github.com/octokit/request.js#request).
`auth.hook()` can be called directly to send an authenticated request
```js
const { data: user } = await auth.hook(request, "GET /user");
```
Or it can be passed as option to [`request()`](https://github.com/octokit/request.js#request).
```js
const requestWithAuth = request.defaults({
request: {
hook: auth.hook,
},
});
const { data: user } = await requestWithAuth("GET /user");
```
## Contributing
See [CONTRIBUTING.md](CONTRIBUTING.md)
## License
[MIT](LICENSE)