Skip to content

OAuthProviderManager

OAuth Provider Manager

Manages OAuth provider configurations for third-party authentication. Supports both built-in providers (Google, GitHub, etc.) and custom OAuth2 providers.

const oauth = client.admin.oauth
// List all OAuth providers
const { providers } = await oauth.listProviders()
// Create a new provider
await oauth.createProvider({
provider_name: 'github',
display_name: 'GitHub',
enabled: true,
client_id: 'your-client-id',
client_secret: 'your-client-secret',
redirect_url: 'https://yourapp.com/auth/callback',
scopes: ['user:email', 'read:user'],
is_custom: false
})
// Update a provider
await oauth.updateProvider('provider-id', {
enabled: false
})
// Delete a provider
await oauth.deleteProvider('provider-id')

new OAuthProviderManager(fetch): OAuthProviderManager

ParameterType
fetchFluxbaseFetch

OAuthProviderManager

createProvider(request): Promise<CreateOAuthProviderResponse>

Create a new OAuth provider

Creates a new OAuth provider configuration. For built-in providers (Google, GitHub, etc.), set is_custom to false. For custom OAuth2 providers, set is_custom to true and provide the authorization, token, and user info URLs.

ParameterTypeDescription
requestCreateOAuthProviderRequestOAuth provider configuration

Promise<CreateOAuthProviderResponse>

Promise resolving to CreateOAuthProviderResponse

// Create GitHub provider
const result = await client.admin.oauth.createProvider({
provider_name: 'github',
display_name: 'GitHub',
enabled: true,
client_id: process.env.GITHUB_CLIENT_ID,
client_secret: process.env.GITHUB_CLIENT_SECRET,
redirect_url: 'https://yourapp.com/auth/callback',
scopes: ['user:email', 'read:user'],
is_custom: false
})
console.log('Provider created:', result.id)
// Create custom OAuth2 provider
await client.admin.oauth.createProvider({
provider_name: 'custom_sso',
display_name: 'Custom SSO',
enabled: true,
client_id: 'client-id',
client_secret: 'client-secret',
redirect_url: 'https://yourapp.com/auth/callback',
scopes: ['openid', 'profile', 'email'],
is_custom: true,
authorization_url: 'https://sso.example.com/oauth/authorize',
token_url: 'https://sso.example.com/oauth/token',
user_info_url: 'https://sso.example.com/oauth/userinfo'
})

deleteProvider(providerId): Promise<DeleteOAuthProviderResponse>

Delete an OAuth provider

Permanently deletes an OAuth provider configuration. This will prevent users from authenticating with this provider.

ParameterTypeDescription
providerIdstringProvider ID (UUID) to delete

Promise<DeleteOAuthProviderResponse>

Promise resolving to DeleteOAuthProviderResponse

await client.admin.oauth.deleteProvider('provider-id')
console.log('Provider deleted')
// Safe deletion with confirmation
const provider = await client.admin.oauth.getProvider('provider-id')
const confirmed = await confirm(`Delete ${provider.display_name}?`)
if (confirmed) {
await client.admin.oauth.deleteProvider('provider-id')
}

disableProvider(providerId): Promise<UpdateOAuthProviderResponse>

Disable an OAuth provider

Convenience method to disable a provider.

ParameterTypeDescription
providerIdstringProvider ID (UUID)

Promise<UpdateOAuthProviderResponse>

Promise resolving to UpdateOAuthProviderResponse

await client.admin.oauth.disableProvider('provider-id')

enableProvider(providerId): Promise<UpdateOAuthProviderResponse>

Enable an OAuth provider

Convenience method to enable a provider.

ParameterTypeDescription
providerIdstringProvider ID (UUID)

Promise<UpdateOAuthProviderResponse>

Promise resolving to UpdateOAuthProviderResponse

await client.admin.oauth.enableProvider('provider-id')

getProvider(providerId): Promise<OAuthProvider>

Get a specific OAuth provider by ID

Retrieves detailed configuration for a single OAuth provider. Note: Client secret is not included in the response.

ParameterTypeDescription
providerIdstringProvider ID (UUID)

Promise<OAuthProvider>

Promise resolving to OAuthProvider

const provider = await client.admin.oauth.getProvider('provider-uuid')
console.log('Provider:', provider.display_name)
console.log('Scopes:', provider.scopes.join(', '))
console.log('Redirect URL:', provider.redirect_url)

listProviders(): Promise<OAuthProvider[]>

List all OAuth providers

Retrieves all configured OAuth providers including both enabled and disabled providers. Note: Client secrets are not included in the response for security reasons.

Promise<OAuthProvider[]>

Promise resolving to ListOAuthProvidersResponse

const { providers } = await client.admin.oauth.listProviders()
providers.forEach(provider => {
console.log(`${provider.display_name}: ${provider.enabled ? 'enabled' : 'disabled'}`)
})

updateProvider(providerId, request): Promise<UpdateOAuthProviderResponse>

Update an existing OAuth provider

Updates an OAuth provider configuration. All fields are optional - only provided fields will be updated. To update the client secret, provide a non-empty value.

ParameterTypeDescription
providerIdstringProvider ID (UUID)
requestUpdateOAuthProviderRequestFields to update

Promise<UpdateOAuthProviderResponse>

Promise resolving to UpdateOAuthProviderResponse

// Disable a provider
await client.admin.oauth.updateProvider('provider-id', {
enabled: false
})
// Update scopes and redirect URL
await client.admin.oauth.updateProvider('provider-id', {
scopes: ['user:email', 'read:user', 'read:org'],
redirect_url: 'https://newdomain.com/auth/callback'
})
// Rotate client secret
await client.admin.oauth.updateProvider('provider-id', {
client_id: 'new-client-id',
client_secret: 'new-client-secret'
})