Skip to main content

Patreon

Follow these steps to add Patreon as a social sign-in provider to your project using the Ory CLI:

  1. Create a client on the Patreon Portal.

  2. Ensure you configure the redirect URIs to:

    https://{project.slug}.projects.oryapis.com/self-service/methods/oidc/callback/patreon
  3. Create a Jsonnet code snippet to map the desired claims to the Ory Identity schema.

    Available Claims
    All claims require the identity scope

    • Subject: Id of the patreon user
    • Email: The patron's email (Additionally requires the identity[email] scope)
    • Name: The patron's full name
    • GivenName: The patron's first name
    • FamilyName: The patron's last name (Same as LastName)
    • LastName: The patron's last name (Same as FamilyName)
    • Picture: A URL to a patron's profile image if present

    More information available about patreon's oauth here

    local claims = std.extVar('claims');
    {
    identity: {
    traits: {
    [if "email" in claims then "email" else null]: claims.email,
    },
    },
    }
  4. Encode the Jsonnet snippet with Base64 or host it under an URL accessible to The Ory Network.

    cat your-data-mapping.jsonnet | base64
  5. Download the Ory Identities config from your project and save it to a file:

    ## List all available projects
    ory list projects

    ## Get config
    ory get identity-config {project-id} --format yaml > identity-config.yaml
  6. Add the social sign-in provider configuration to the downloaded config. Add the Jsonnet snippet with mappings as a Base64 string or provide an URL to the file.

    selfservice:
    methods:
    oidc:
    enabled: true
    config:
    providers:
    - id: patreon # this is `<provider-id>` in the Authorization callback URL. DO NOT CHANGE IT ONCE SET!
    provider: patreon
    client_id: .... # Replace this with the OAuth2 Client ID provided by patreon
    client_secret: .... # Replace this with the OAuth2 Client Secret provided by patreon
    mapper_url: "base64://{YOUR_BASE64_ENCODED_JSONNET_HERE}"
    # Alternatively, use an URL:
    # mapper_url: https://storage.googleapis.com/abc-cde-prd/9cac9717f007808bf17f22ce7f4295c739604b183f05ac4afb4

    # Patreon's scopes are [documented here](https://docs.patreon.com/#scopes)
    scope:
    - identity
    - identity[email]
    - identity.memberships
    - campaigns
    - w:campaigns.webhook
    - campaigns.members
    - campaigns.members[email]
    - campaigns.members.address
    - campaigns.posts
  7. Update the Ory Identities configuration using the file you worked with:

    ory update identity-config {project-id} --file updated_config.yaml