[PR #1395] [CLOSED] feat: allow extra data when registering with OAuth #12037

Closed
opened 2026-04-13 08:08:30 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/better-auth/better-auth/pull/1395
Author: @chris-verclytte
Created: 2/9/2025
Status: Closed

Base: mainHead: feat/oauth-extra-data


📝 Commits (4)

  • 2d09c0f feat: allow extra data when registering with OAuth
  • cc0fc22 feat: pass additional data in getUserInfo to all social providers
  • eb20c51 feat: add additionalData typings on socialSignIn endpoint
  • 9dd6279 feat: inject options inside signInSocial context

📊 Changes

19 files changed (+300 additions, -267 deletions)

View changed files

📝 packages/better-auth/src/api/index.ts (+1 -1)
📝 packages/better-auth/src/api/routes/callback.ts (+2 -2)
📝 packages/better-auth/src/api/routes/sign-in.ts (+251 -221)
📝 packages/better-auth/src/db/internal-adapter.ts (+1 -1)
📝 packages/better-auth/src/oauth2/state.ts (+3 -0)
📝 packages/better-auth/src/oauth2/types.ts (+3 -3)
📝 packages/better-auth/src/social-providers/apple.ts (+3 -3)
📝 packages/better-auth/src/social-providers/discord.ts (+3 -3)
📝 packages/better-auth/src/social-providers/dropbox.ts (+3 -3)
📝 packages/better-auth/src/social-providers/facebook.ts (+4 -4)
📝 packages/better-auth/src/social-providers/github.ts (+3 -3)
📝 packages/better-auth/src/social-providers/gitlab.ts (+3 -3)
📝 packages/better-auth/src/social-providers/google.ts (+3 -3)
📝 packages/better-auth/src/social-providers/linkedin.ts (+2 -2)
📝 packages/better-auth/src/social-providers/microsoft-entra-id.ts (+3 -3)
📝 packages/better-auth/src/social-providers/reddit.ts (+3 -3)
📝 packages/better-auth/src/social-providers/spotify.ts (+3 -3)
📝 packages/better-auth/src/social-providers/twitch.ts (+3 -3)
📝 packages/better-auth/src/social-providers/twitter.ts (+3 -3)

📄 Description

Provides a solution for #778.

Use case

When registering a new user, one might wants to initialize a specific field - a good example would be providing different sign up forms for different user types.
When using "authClient.signUp.email(...)", you could easily provide additional fields to be populated inside the user entity doing so:

authClient.signUp.email({
    email: "test@example.com",
    password: "password1234",
    name: "test",
    image: "https://example.com/image.png",
    type: 'USER_TYPE_1', // Here goes the extra field
})

However, if the system allows users to register with OAuth providers, one would needs the kind of additional data handling but the "authClient.signIn.social(...)" API does not allow to pass extra field when registering the user :

const data = await authClient.signIn.social({
    provider: "google",
    type: 'USER_TYPE_1', // <-- This won't work 
})

Proposal

This PR proposal is to create an additionalData API on signIn.social so that we could also pass additional data when registering with OAuth:

const data = await authClient.signIn.social({
    provider: "google",
    additionalData:  {
        type: 'USER_TYPE_1',
    }
})

Then the data would become available inside getUserInfo hooks in order to pass it to the internal adapter creation function.
In the end the end-developer would just need to update Better Auth config file by using the additional field inside of getUserInfo :

export const auth = betterAuth({
// ... Rest of the config
socialProviders: {
    google: {
      clientId: <google_client_id>,
      clientSecret: <google_client_secret>,
      mapProfileToUser: (profile: GoogleProfile, additionalData: Record<string, unknown> = {}) => ({
        email: profile.email,
        name: `${profile.given_name} ${profile.family_name}`,
        emailVerified: profile.email_verified === true,
        image: profile.picture,
        ...additionalData, // <-- Here you can use additionalData as you want
      }),
    },
   // ... Repeat for every social provider you want to handle
  },

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/better-auth/better-auth/pull/1395 **Author:** [@chris-verclytte](https://github.com/chris-verclytte) **Created:** 2/9/2025 **Status:** ❌ Closed **Base:** `main` ← **Head:** `feat/oauth-extra-data` --- ### 📝 Commits (4) - [`2d09c0f`](https://github.com/better-auth/better-auth/commit/2d09c0fc127d3cad19e72293607ee145ce1474a3) feat: allow extra data when registering with OAuth - [`cc0fc22`](https://github.com/better-auth/better-auth/commit/cc0fc22b90f51b2330a0cd80cc7c0d4155adf72f) feat: pass additional data in getUserInfo to all social providers - [`eb20c51`](https://github.com/better-auth/better-auth/commit/eb20c51796ae8cd8614aed37556ea7935e9e9635) feat: add additionalData typings on socialSignIn endpoint - [`9dd6279`](https://github.com/better-auth/better-auth/commit/9dd627990bc220f632f67191a71a3431be0d29e4) feat: inject options inside signInSocial context ### 📊 Changes **19 files changed** (+300 additions, -267 deletions) <details> <summary>View changed files</summary> 📝 `packages/better-auth/src/api/index.ts` (+1 -1) 📝 `packages/better-auth/src/api/routes/callback.ts` (+2 -2) 📝 `packages/better-auth/src/api/routes/sign-in.ts` (+251 -221) 📝 `packages/better-auth/src/db/internal-adapter.ts` (+1 -1) 📝 `packages/better-auth/src/oauth2/state.ts` (+3 -0) 📝 `packages/better-auth/src/oauth2/types.ts` (+3 -3) 📝 `packages/better-auth/src/social-providers/apple.ts` (+3 -3) 📝 `packages/better-auth/src/social-providers/discord.ts` (+3 -3) 📝 `packages/better-auth/src/social-providers/dropbox.ts` (+3 -3) 📝 `packages/better-auth/src/social-providers/facebook.ts` (+4 -4) 📝 `packages/better-auth/src/social-providers/github.ts` (+3 -3) 📝 `packages/better-auth/src/social-providers/gitlab.ts` (+3 -3) 📝 `packages/better-auth/src/social-providers/google.ts` (+3 -3) 📝 `packages/better-auth/src/social-providers/linkedin.ts` (+2 -2) 📝 `packages/better-auth/src/social-providers/microsoft-entra-id.ts` (+3 -3) 📝 `packages/better-auth/src/social-providers/reddit.ts` (+3 -3) 📝 `packages/better-auth/src/social-providers/spotify.ts` (+3 -3) 📝 `packages/better-auth/src/social-providers/twitch.ts` (+3 -3) 📝 `packages/better-auth/src/social-providers/twitter.ts` (+3 -3) </details> ### 📄 Description Provides a solution for #778. # Use case When registering a new user, one might wants to initialize a specific field - a good example would be providing different sign up forms for different user types. When using "authClient.signUp.email(...)", you could easily provide additional fields to be populated inside the user entity doing so: ```js authClient.signUp.email({ email: "test@example.com", password: "password1234", name: "test", image: "https://example.com/image.png", type: 'USER_TYPE_1', // Here goes the extra field }) ``` However, if the system allows users to register with OAuth providers, one would needs the kind of additional data handling but the "authClient.signIn.social(...)" API does not allow to pass extra field when registering the user : ```js const data = await authClient.signIn.social({ provider: "google", type: 'USER_TYPE_1', // <-- This won't work }) ``` # Proposal This PR proposal is to create an additionalData API on signIn.social so that we could also pass additional data when registering with OAuth: ```js const data = await authClient.signIn.social({ provider: "google", additionalData: { type: 'USER_TYPE_1', } }) ``` Then the data would become available inside `getUserInfo` hooks in order to pass it to the internal adapter creation function. In the end the end-developer would just need to update Better Auth config file by using the additional field inside of getUserInfo : ```js export const auth = betterAuth({ // ... Rest of the config socialProviders: { google: { clientId: <google_client_id>, clientSecret: <google_client_secret>, mapProfileToUser: (profile: GoogleProfile, additionalData: Record<string, unknown> = {}) => ({ email: profile.email, name: `${profile.given_name} ${profile.family_name}`, emailVerified: profile.email_verified === true, image: profile.picture, ...additionalData, // <-- Here you can use additionalData as you want }), }, // ... Repeat for every social provider you want to handle }, ``` --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
GiteaMirror added the pull-request label 2026-04-13 08:08:30 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/better-auth#12037