PDF Web Viewer
    Preparing search index...

    Interface IDropboxConfig

    Dropbox integration configuration.

    When supplied, the viewer shows a "Dropbox" card on the empty ("home") screen with a Connect action. The library performs the OAuth flow itself (authorization code + PKCE, no client secret) using the integrator-provided app key and lists the user's recent Dropbox PDFs / lets them browse folders.

    The integrator creates an app in the Dropbox App Console (scoped access), grants the delegated scopes matching IDropboxConfig.scopes, and adds IDropboxConfig.redirectUri to the app's OAuth 2 "Redirect URIs". Because Dropbox issues refresh tokens to PKCE browser clients, the connection is refreshed silently and survives reloads without a backend.

    interface IDropboxConfig {
        clientId: string;
        isSaveAllowed?: AllowSaveGuard;
        redirectUri?: string;
        scopes?: string[];
    }
    Index

    Properties

    clientId: string

    Dropbox app key (OAuth client ID). Required.

    isSaveAllowed?: AllowSaveGuard

    Optional guard for saving into Dropbox. The upload itself is performed by the library; this only decides whether a given document may be written to a given target. Omit it to allow every save. See AllowSaveGuard.

    redirectUri?: string

    OAuth redirect URI registered in the Dropbox app console.

    Defaults to the redirect page shipped with the package: <origin>/pwv-dropbox/redirect.html (serve the package's public/ folder at your web root and register that exact URL — the match is exact, path included). Most web integrators should omit this.

    Override it only for a non-root asset path, or for desktop shells: a cross-origin loopback URI (e.g. http://127.0.0.1:<port>/dropbox-callback) switches the connector into the external system-browser flow.

    scopes?: string[]

    Delegated Dropbox scopes requested at connect time. Defaults to ['account_info.read', 'files.metadata.read', 'files.content.read', 'files.content.write'] — read-write, so saving back to Dropbox works out of the box; drop files.content.write for a read-only integration.

    Set [] for a LEGACY (pre-scoped-access) Dropbox app: those reject any requested scope ("must be at most 0 characters"), so an empty list makes the connector omit the scope parameter entirely and the token carries whatever permissions the app registration implies.