From 2144b97e6733babc7228f2a6e6a65bd191d32253 Mon Sep 17 00:00:00 2001 From: Maisy Date: Mon, 17 Nov 2025 10:55:12 -0800 Subject: [PATCH 1/5] add docs --- .../on-platform-account-linking.mdx | 159 ++++++++++++++++++ docs/discord-social-sdk/how-to/debug-log.mdx | 15 +- 2 files changed, 171 insertions(+), 3 deletions(-) create mode 100644 docs/discord-social-sdk/development-guides/on-platform-account-linking.mdx diff --git a/docs/discord-social-sdk/development-guides/on-platform-account-linking.mdx b/docs/discord-social-sdk/development-guides/on-platform-account-linking.mdx new file mode 100644 index 0000000000..6ef4087bf1 --- /dev/null +++ b/docs/discord-social-sdk/development-guides/on-platform-account-linking.mdx @@ -0,0 +1,159 @@ +--- +title: On-Platform Account Linking +description: Adopt the On-Platform account linking APIs to allow Discord to show your players new entry points for account linking within the Discord client +--- + +import PublicClient from "/snippets/discord-social-sdk/callouts/public-client.mdx"; +import SupportCallout from "/snippets/discord-social-sdk/callouts/support.mdx"; + +## Overview + +Discord is working on adding several new entry points for account linking from within the Discord client to encourage users to link their accounts to your game. This guide explains how to prepare your game for Discord's on-platform account linking flows. + +### Prerequisites + +Before you begin, make sure you have: + +- Read the [Core Concepts](/developers/docs/discord-social-sdk/core-concepts) guide to understand: + - OAuth2 authentication flow + - Discord application setup + - SDK initialization +- Set up your development environment with: + - Discord application created in the [Developer Portal](https://discord.com/developers/applications) + - Discord Social SDK downloaded and configured + - Basic SDK integration working (initialization and connection) + +If you haven't completed these prerequisites, we recommend first following the [Getting Started](/developers/docs/discord-social-sdk/getting-started) guide. + +--- + +## The On-Platform Account Linking Flows + +At this time, Discord provides two different flows for on-platform account linking, the connected game flow and the web flow. When a user clicks on one of the entry points within their Discord client, it will choose one of the currently available flows to send the user through. To provide a good user experience, flows are chosen in the following priority order: + +- Connected game flow +- Web flow + +### Connected Game Flow + +This is our prefered account linking flow as we think it provides the best user experience when it's available. The connected game flow will send the user into your game client to begin the account linking flow. + +#### Prerequisites + +- Upgrade to SDK version 1.6 or higher +- Implement account linking + +#### Implemetation + +Once you have adopted SDK version 1.6 or higher, there will be two new methods on the Client object, [`Client::RegisterAuthorizeRequestCallback`] and [`Client::RemoveAuthorizeRequestCallback`]. These two new methods will allow you to enable and disable this flow while your game is running. + + + Before calling [`Client::RegisterAuthorizeRequestCallback`], ensure + [`Client::SetApplicationId`] has been called. This ensures that your game is + properly identifying itself to the Discord client and that all requests are + associated with the correct application. + + +Calling [`Client::RegisterAuthorizeRequestCallback`] with a callback function will signal to the Discord client that your game is running and able to start the account linking process. You should run this as soon as your game is able to handle an account link, for instance just after your user has logged in or reached the main menu. + +When a user clicks one of the account linking entry points in their Discord client, the SDK will run your callback. Treat this as if the user had just clicked one of your in-game account linking buttons and begin the authorization flow right away. + + + When your game receives this callback, the user is most likely focused on the + Discord client, not the game client. Make sure to pull focus or otherwise + alert the user that something is happening in the game. The Discord client + will notify them to check the game as well, but for a more seamless + experience, you should pull them back into the game. + + +Calling [`Client::RemoveAuthorizeRequestCallback`] will signal to the Discord client that your game is no longer able to start the account linking process. Call this whenever your game client is entering a state where starting the account linking process wouldn't work, for instance if the player enters a match, logs out, or is in some other full screen flow like a cutscene. + +This is all you need to enable the connected game flow, you can test and debug this flow using our new [built-in developer tools](/developers/docs/discord-social-sdk/how-to/debug-log#client-tools) in the Discord client. + +```cpp +// If you haven't already +client.SetApplicationId("123456789"); + +client.RegisterAuthorizeRequestCallback([client, myGameAuthorizationHandler]() { + // Pull focus into your game using native APIs + // ... + + // Run your normal authorization flow + myGameAuthorizationHandler.StartDiscordAccountLink(); +}); +``` + +#### Best Practices + +When a user clicks the account link button in their Discord client, this is a high intent action. Skip any extra upsells you have until after the user has linked their account, any extra steps added to this linking flow increases the areas where users may drop off. Show them any upsells after they've linked to reaffirm all the new features and any rewards they may have unlocked by linking their account. + +Ensure you're enabling and disabling the callback at the appropriate times. If a user clicks an entry point in their Discord client and it launches the account linking flow in the middle of a match, this can interrupt gameplay and pull them out of your intended experience. + +Don't worry about checking if the user is already linked, the Discord client will handle hiding the entry point for users that have already linked their accounts. This will keep your implementation simpler and reduce surface for issues. + +### Web Flow + +The web flow is an alternative to the connected game flow, allowing you to send users to a webpage to begin the account linking process. At this time, this flow is only available to partners. + +#### Prerequisites + +- Implement the [standard OAuth2 flow](/developers/docs/topics/oauth2) on your website + +#### Implemetation + +Ensure your webpage meets the following requirements: + +- If the user isn't signed in to their game account, it should prompt them to sign in and then take them immediately back to the authorization flow. +- The authorization should request the same scopes that you request in your game +- After authorization is complete, the token should be saved to the user's account the same way you would during in-game authorization so that it's ready the next time the user launches their game +- If the user is currently in game, send an update to their client with the token and call [`Client::UpdateToken`] to sign them in right away without needing to restart their game + +--- + +## Next Steps + +Now that you've successfully implemented account linking with Discord, you can integrate more social features into your game. + +import { PaintPaletteIcon } from "/snippets/icons/PaintPaletteIcon.jsx"; +import { ListViewIcon } from "/snippets/icons/ListViewIcon.jsx"; +import { UserIcon } from "/snippets/icons/UserIcon.jsx"; + + + } + > + Design guidelines for account linking and user authentication + + } + > + Combine Discord and game friends into a single list for easy management. + + } + > + Display game status and information to Discord friends. + + + + + +--- + +## Change Log + +| Date | Changes | +| ----------------- | --------------- | +| November 17, 2025 | initial release | + +{/* Autogenerated Reference Links */} +[`Client::RegisterAuthorizeRequestCallback`]: https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1Client.html#a5f34b873e127a446c9ab549e4588ccd7 +[`Client::RemoveAuthorizeRequestCallback`]: https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1Client.html#ab7e48864b0cedf3e8572a228ca401f2a +[`Client::SetApplicationId`]: https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1Client.html#ad452335c06b28be0406dab824acccc49 +[`Client::UpdateToken`]: https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1Client.html#a606b32cef7796f7fb91c2497bc31afc4 diff --git a/docs/discord-social-sdk/how-to/debug-log.mdx b/docs/discord-social-sdk/how-to/debug-log.mdx index 1adc35e1e6..46114b3c23 100644 --- a/docs/discord-social-sdk/how-to/debug-log.mdx +++ b/docs/discord-social-sdk/how-to/debug-log.mdx @@ -60,6 +60,14 @@ AEC dump files can become large quickly as they contain raw waveform data. Remem once you've captured the necessary data for analysis. ::: +## Client Tools + +The Discord client now includes some built-in developer tools to help you diagnose issues and test some of the features of the Discord Social SDK. To enable these new tools, navigate to `Settings > Advanced` and toggle on Application Test Mode. For the purposes of this guide, enter your Application ID and ignore the rest of the options in this modal, then click Activate. Once you've enabled Application Test Mode, you should see a new wrench icon in the upper right corner of your client. Click on this to open the developer tools. + +### Account Linking + +This tab shows you the status of each of the on-platform account linking flows as well as provides a quick option to start the account linking flow without needing to find one of the entry points within the client. For more information on each of the flows, read the [on-platform account linking guide](/developers/docs/discord-social-sdk/development-guides/on-platform-account-linking). + --- ## Next Steps @@ -82,9 +90,10 @@ once you've captured the necessary data for analysis. ## Change Log -| Date | Changes | -|----------------|-----------------| -| March 17, 2025 | initial release | +| Date | Changes | +| ----------------- | ---------------- | +| March 17, 2025 | initial release | +| November 17, 2025 | add client tools | {/* Autogenerated Reference Links */} [`Client::AddLogCallback`]: https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1Client.html#af78996cff24a40f5dc7066beed16692c From 8b824683275b79ef1c2c4535a7656cdfdbac176c Mon Sep 17 00:00:00 2001 From: Colin Loretz Date: Mon, 17 Nov 2025 16:36:20 -0800 Subject: [PATCH 2/5] Apply suggestions from code review --- .../development-guides/on-platform-account-linking.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/discord-social-sdk/development-guides/on-platform-account-linking.mdx b/docs/discord-social-sdk/development-guides/on-platform-account-linking.mdx index 6ef4087bf1..7978920106 100644 --- a/docs/discord-social-sdk/development-guides/on-platform-account-linking.mdx +++ b/docs/discord-social-sdk/development-guides/on-platform-account-linking.mdx @@ -43,7 +43,7 @@ This is our prefered account linking flow as we think it provides the best user - Upgrade to SDK version 1.6 or higher - Implement account linking -#### Implemetation +#### Implementation Once you have adopted SDK version 1.6 or higher, there will be two new methods on the Client object, [`Client::RegisterAuthorizeRequestCallback`] and [`Client::RemoveAuthorizeRequestCallback`]. These two new methods will allow you to enable and disable this flow while your game is running. From 125a1ff56a58f2a2649e8d1d6a2f8b921ca4cb0d Mon Sep 17 00:00:00 2001 From: Maisy Date: Wed, 19 Nov 2025 10:56:06 -0800 Subject: [PATCH 3/5] some feedback --- ...nt-linking.mdx => account-linking-from-discord.mdx} | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) rename docs/discord-social-sdk/development-guides/{on-platform-account-linking.mdx => account-linking-from-discord.mdx} (89%) diff --git a/docs/discord-social-sdk/development-guides/on-platform-account-linking.mdx b/docs/discord-social-sdk/development-guides/account-linking-from-discord.mdx similarity index 89% rename from docs/discord-social-sdk/development-guides/on-platform-account-linking.mdx rename to docs/discord-social-sdk/development-guides/account-linking-from-discord.mdx index 7978920106..950f82a778 100644 --- a/docs/discord-social-sdk/development-guides/on-platform-account-linking.mdx +++ b/docs/discord-social-sdk/development-guides/account-linking-from-discord.mdx @@ -1,6 +1,6 @@ --- -title: On-Platform Account Linking -description: Adopt the On-Platform account linking APIs to allow Discord to show your players new entry points for account linking within the Discord client +title: Account Linking from Discord +description: Adopt the new account linking APIs to allow Discord to show your players entry points for account linking within the Discord client --- import PublicClient from "/snippets/discord-social-sdk/callouts/public-client.mdx"; @@ -8,7 +8,7 @@ import SupportCallout from "/snippets/discord-social-sdk/callouts/support.mdx"; ## Overview -Discord is working on adding several new entry points for account linking from within the Discord client to encourage users to link their accounts to your game. This guide explains how to prepare your game for Discord's on-platform account linking flows. +The Discord client contains entry points to encourage users to link their account to your game. This guide explains how to prepare your game for the Discord client's account linking flows. ### Prerequisites @@ -27,9 +27,9 @@ If you haven't completed these prerequisites, we recommend first following the [ --- -## The On-Platform Account Linking Flows +## The Account Linking Flows -At this time, Discord provides two different flows for on-platform account linking, the connected game flow and the web flow. When a user clicks on one of the entry points within their Discord client, it will choose one of the currently available flows to send the user through. To provide a good user experience, flows are chosen in the following priority order: +At this time, Discord provides two different flows for account linking from the client, the connected game flow and the web flow. When a user clicks on one of the entry points within their Discord client, it will choose one of the currently available flows to send the user through. To provide a good user experience, flows are chosen in the following priority order: - Connected game flow - Web flow From db1163949e877ed42df9afdbf79fe709e75f054a Mon Sep 17 00:00:00 2001 From: Colin Loretz Date: Wed, 19 Nov 2025 23:55:03 +0000 Subject: [PATCH 4/5] minor edits --- .../discord-social-sdk/development-guides.mdx | 8 +- .../account-linking-from-discord.mdx | 117 +++++++++++------- .../account-linking-with-discord.mdx | 2 +- docs/discord-social-sdk/how-to/debug-log.mdx | 4 +- .../development-guides/entrypoints.webp | Bin 0 -> 30224 bytes 5 files changed, 80 insertions(+), 51 deletions(-) create mode 100644 static/images/social-sdk/development-guides/entrypoints.webp diff --git a/docs/discord-social-sdk/development-guides.mdx b/docs/discord-social-sdk/development-guides.mdx index 001f5d0c29..a60c33a7e5 100644 --- a/docs/discord-social-sdk/development-guides.mdx +++ b/docs/discord-social-sdk/development-guides.mdx @@ -4,6 +4,7 @@ showTOC: false subpages: - development-guides/account-linking-with-discord.mdx - development-guides/account-linking-on-consoles.mdx + - development-guides/account-linking-from-discord.mdx - development-guides/using-provisional-accounts.mdx - development-guides/creating-a-unified-friends-list.mdx - development-guides/managing-relationships.mdx @@ -25,11 +26,14 @@ If you are new to the Discord Social SDK, we recommend you start with the [Getti ## Authentication & Account Linking - + Learn how to authenticate users with their Discord accounts using OAuth2. - Implement Discord authentication flows for console platforms. + Implement Discord authentication flows for console platforms. + + + Allow players to link their game accounts from the Discord client. Give your users a seamless account experience with provisional accounts. diff --git a/docs/discord-social-sdk/development-guides/account-linking-from-discord.mdx b/docs/discord-social-sdk/development-guides/account-linking-from-discord.mdx index 950f82a778..cd7fc193c2 100644 --- a/docs/discord-social-sdk/development-guides/account-linking-from-discord.mdx +++ b/docs/discord-social-sdk/development-guides/account-linking-from-discord.mdx @@ -1,74 +1,99 @@ --- title: Account Linking from Discord +sidebar_label: Account Linking from Discord description: Adopt the new account linking APIs to allow Discord to show your players entry points for account linking within the Discord client --- -import PublicClient from "/snippets/discord-social-sdk/callouts/public-client.mdx"; -import SupportCallout from "/snippets/discord-social-sdk/callouts/support.mdx"; +import SupportCallout from '../partials/callouts/support.mdx'; + +[Home](/docs/intro) > [Discord Social SDK](/docs/discord-social-sdk/overview) > [Development Guides](/docs/discord-social-sdk/development-guides) > {sidebar_label} + +# {sidebar_label} ## Overview -The Discord client contains entry points to encourage users to link their account to your game. This guide explains how to prepare your game for the Discord client's account linking flows. +To give players more flexibility and options for account linking, Discord can show prompts and buttons throughout the Discord client that encourage users to link their accounts with your game. These are called entry points for account linking. + +Higher account linking rates lead to better social features, improved engagement, and a stronger connection between your game and Discord users. + +This guide shows you how to enable Discord to display these account linking prompts to your players. ### Prerequisites -Before you begin, make sure you have: +Before enabling these entry points, you must have: -- Read the [Core Concepts](/developers/docs/discord-social-sdk/core-concepts) guide to understand: - - OAuth2 authentication flow - - Discord application setup - - SDK initialization -- Set up your development environment with: - - Discord application created in the [Developer Portal](https://discord.com/developers/applications) - - Discord Social SDK downloaded and configured - - Basic SDK integration working (initialization and connection) +- **Discord application setup** + - Created a Discord application in the [Developer Portal](https://discord.com/developers/applications) + - Configured OAuth2 settings with appropriate redirect URLs +- **Implemented account linking in your game** + - Discord Social SDK downloaded and integrated into your game + - SDK initialization working (can connect to Discord) + - [Basic account linking flow](/docs/discord-social-sdk/development-guides/account-linking-with-discord) already implemented in your game +- **Development environment ready** + - Game can successfully authenticate users with Discord OAuth2 -If you haven't completed these prerequisites, we recommend first following the [Getting Started](/developers/docs/discord-social-sdk/getting-started) guide. +If you haven't completed these prerequisites, we recommend first following the [Getting Started](/docs/discord-social-sdk/getting-started) guide. --- -## The Account Linking Flows +## Entry Points & Account Linking Flows + +### What are Entry Points? + +Entry points are buttons, prompts, and UI elements that Discord shows throughout the Discord client to encourage account linking. Think of them as "Link your account" buttons that appear in various places where users might see your game. + +### Example of an Entry Point + +Discord automatically chooses which entry points to show based on what features you've implemented and whether your game is currently running. + +![Example of entry points in Discord](images/social-sdk/development-guides/entrypoints.webp) + +### Account Linking Flows At this time, Discord provides two different flows for account linking from the client, the connected game flow and the web flow. When a user clicks on one of the entry points within their Discord client, it will choose one of the currently available flows to send the user through. To provide a good user experience, flows are chosen in the following priority order: -- Connected game flow -- Web flow +- [Connected game flow](/docs/discord-social-sdk/development-guides/account-linking-from-discord#connected-game-flow) +- [Web flow](/docs/discord-social-sdk/development-guides/account-linking-from-discord#web-flow) + +Choose which flows work best for your game and follow the implementation guides below. You can implement one or both flows to give your players more options for linking their accounts. + +--- -### Connected Game Flow +## Connected Game Flow This is our prefered account linking flow as we think it provides the best user experience when it's available. The connected game flow will send the user into your game client to begin the account linking flow. -#### Prerequisites +### Prerequisites - Upgrade to SDK version 1.6 or higher -- Implement account linking +- Implement [account linking](/docs/discord-social-sdk/development-guides/account-linking-with-discord) in your game -#### Implementation +### Implementing the Connected Game Flow Once you have adopted SDK version 1.6 or higher, there will be two new methods on the Client object, [`Client::RegisterAuthorizeRequestCallback`] and [`Client::RemoveAuthorizeRequestCallback`]. These two new methods will allow you to enable and disable this flow while your game is running. - +:::warn Before calling [`Client::RegisterAuthorizeRequestCallback`], ensure [`Client::SetApplicationId`] has been called. This ensures that your game is properly identifying itself to the Discord client and that all requests are associated with the correct application. - +::: Calling [`Client::RegisterAuthorizeRequestCallback`] with a callback function will signal to the Discord client that your game is running and able to start the account linking process. You should run this as soon as your game is able to handle an account link, for instance just after your user has logged in or reached the main menu. When a user clicks one of the account linking entry points in their Discord client, the SDK will run your callback. Treat this as if the user had just clicked one of your in-game account linking buttons and begin the authorization flow right away. - +:::info When your game receives this callback, the user is most likely focused on the Discord client, not the game client. Make sure to pull focus or otherwise alert the user that something is happening in the game. The Discord client - will notify them to check the game as well, but for a more seamless + will notify them to check the game as well. For a more seamless experience, you should pull them back into the game. - +::: Calling [`Client::RemoveAuthorizeRequestCallback`] will signal to the Discord client that your game is no longer able to start the account linking process. Call this whenever your game client is entering a state where starting the account linking process wouldn't work, for instance if the player enters a match, logs out, or is in some other full screen flow like a cutscene. -This is all you need to enable the connected game flow, you can test and debug this flow using our new [built-in developer tools](/developers/docs/discord-social-sdk/how-to/debug-log#client-tools) in the Discord client. +This is all you need to enable the connected game flow, you can test and debug this flow using our new [built-in developer tools](/docs/discord-social-sdk/how-to/debug-log#client-tools) in the Discord client. ```cpp // If you haven't already @@ -83,23 +108,27 @@ client.RegisterAuthorizeRequestCallback([client, myGameAuthorizationHandler]() { }); ``` -#### Best Practices +### Connected Game Best Practices -When a user clicks the account link button in their Discord client, this is a high intent action. Skip any extra upsells you have until after the user has linked their account, any extra steps added to this linking flow increases the areas where users may drop off. Show them any upsells after they've linked to reaffirm all the new features and any rewards they may have unlocked by linking their account. +When a user clicks the account link button in their Discord client, this is a high intent action. We recommend skipping any extra upsells you have until after the user has linked their account, as any extra steps added to this linking flow increases the areas where users may drop off. Show them any upsells after they've linked to reaffirm all the new features and any rewards they may have unlocked by linking their account. Ensure you're enabling and disabling the callback at the appropriate times. If a user clicks an entry point in their Discord client and it launches the account linking flow in the middle of a match, this can interrupt gameplay and pull them out of your intended experience. Don't worry about checking if the user is already linked, the Discord client will handle hiding the entry point for users that have already linked their accounts. This will keep your implementation simpler and reduce surface for issues. -### Web Flow +## Web Flow + +The web flow is an alternative to the connected game flow, allowing you to send users to a webpage to begin the account linking process. -The web flow is an alternative to the connected game flow, allowing you to send users to a webpage to begin the account linking process. At this time, this flow is only available to partners. +:::preview +At this time, this flow is only available to select partners. +::: -#### Prerequisites +### Prerequisites -- Implement the [standard OAuth2 flow](/developers/docs/topics/oauth2) on your website +- Implement the [standard OAuth2 flow](/docs/topics/oauth2) on your website -#### Implemetation +### Implementing the Web Flow Ensure your webpage meets the following requirements: @@ -114,33 +143,29 @@ Ensure your webpage meets the following requirements: Now that you've successfully implemented account linking with Discord, you can integrate more social features into your game. -import { PaintPaletteIcon } from "/snippets/icons/PaintPaletteIcon.jsx"; -import { ListViewIcon } from "/snippets/icons/ListViewIcon.jsx"; -import { UserIcon } from "/snippets/icons/UserIcon.jsx"; - - + } + link="/docs/discord-social-sdk/design-guidelines/signing-in" + icon="PaintPaletteIcon" > Design guidelines for account linking and user authentication } + link="/docs/discord-social-sdk/development-guides/creating-a-unified-friends-list" + icon="ListViewIcon" > Combine Discord and game friends into a single list for easy management. } + link="/docs/discord-social-sdk/development-guides/setting-rich-presence" + icon="UserIcon" > Display game status and information to Discord friends. - + @@ -149,7 +174,7 @@ import { UserIcon } from "/snippets/icons/UserIcon.jsx"; ## Change Log | Date | Changes | -| ----------------- | --------------- | +|-------------------|-----------------| | November 17, 2025 | initial release | {/* Autogenerated Reference Links */} diff --git a/docs/discord-social-sdk/development-guides/account-linking-with-discord.mdx b/docs/discord-social-sdk/development-guides/account-linking-with-discord.mdx index e45eab82cd..591926bdf1 100644 --- a/docs/discord-social-sdk/development-guides/account-linking-with-discord.mdx +++ b/docs/discord-social-sdk/development-guides/account-linking-with-discord.mdx @@ -1,5 +1,5 @@ --- -sidebar_label: Account Linking with Discord +sidebar_label: Account Linking from Your Game --- import PublicClient from '../partials/callouts/public-client.mdx'; import SupportCallout from '../partials/callouts/support.mdx'; diff --git a/docs/discord-social-sdk/how-to/debug-log.mdx b/docs/discord-social-sdk/how-to/debug-log.mdx index 46114b3c23..63e57ead08 100644 --- a/docs/discord-social-sdk/how-to/debug-log.mdx +++ b/docs/discord-social-sdk/how-to/debug-log.mdx @@ -66,7 +66,7 @@ The Discord client now includes some built-in developer tools to help you diagno ### Account Linking -This tab shows you the status of each of the on-platform account linking flows as well as provides a quick option to start the account linking flow without needing to find one of the entry points within the client. For more information on each of the flows, read the [on-platform account linking guide](/developers/docs/discord-social-sdk/development-guides/on-platform-account-linking). +This tab shows you the status of each of the on-platform account linking flows as well as provides a quick option to start the account linking flow without needing to find one of the entry points within the client. For more information on each of the flows, read the [Account Linking from Discord guide](/docs/discord-social-sdk/development-guides/account-linking-from-discord). --- @@ -91,7 +91,7 @@ This tab shows you the status of each of the on-platform account linking flows a ## Change Log | Date | Changes | -| ----------------- | ---------------- | +|-------------------|------------------| | March 17, 2025 | initial release | | November 17, 2025 | add client tools | diff --git a/static/images/social-sdk/development-guides/entrypoints.webp b/static/images/social-sdk/development-guides/entrypoints.webp new file mode 100644 index 0000000000000000000000000000000000000000..60c34cefc50cc6f1134c9b9bdeba38fc96e0f5de GIT binary patch literal 30224 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 literal 0 HcmV?d00001 From 13c6a075584b080c97697da333e76120d1b0f821 Mon Sep 17 00:00:00 2001 From: Colin Loretz Date: Tue, 16 Dec 2025 21:12:43 +0000 Subject: [PATCH 5/5] Changelog --- .../2025-12-16-account-linking-from-discord.md | 15 +++++++++++++++ .../account-linking-from-discord.mdx | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 docs/change-log/2025-12-16-account-linking-from-discord.md diff --git a/docs/change-log/2025-12-16-account-linking-from-discord.md b/docs/change-log/2025-12-16-account-linking-from-discord.md new file mode 100644 index 0000000000..b23448679d --- /dev/null +++ b/docs/change-log/2025-12-16-account-linking-from-discord.md @@ -0,0 +1,15 @@ +--- +title: "New Social SDK Guide: Account Linking from Discord" +date: "2025-12-16" +topics: + - "Discord Social SDK" +--- + +We've added a new guide showing how to enable account linking entry points within the Discord client. With Social SDK 1.6+, Discord can now display "Link your account" prompts and buttons throughout the client to encourage players to connect their game accounts, leading to higher linking rates and better social engagement. + +The guide covers two implementation flows: + +- **Connected Game Flow (recommended)**: Uses new callback methods to launch account linking directly in your game when players click Discord's entry points +- **Web Flow**: Routes players through a web-based OAuth flow (currently only available for select partners) + +[Read the full guide →](/docs/discord-social-sdk/development-guides/account-linking-from-discord) \ No newline at end of file diff --git a/docs/discord-social-sdk/development-guides/account-linking-from-discord.mdx b/docs/discord-social-sdk/development-guides/account-linking-from-discord.mdx index cd7fc193c2..3ce33a1538 100644 --- a/docs/discord-social-sdk/development-guides/account-linking-from-discord.mdx +++ b/docs/discord-social-sdk/development-guides/account-linking-from-discord.mdx @@ -175,7 +175,7 @@ Now that you've successfully implemented account linking with Discord, you can i | Date | Changes | |-------------------|-----------------| -| November 17, 2025 | initial release | +| December 16, 2025 | initial release | {/* Autogenerated Reference Links */} [`Client::RegisterAuthorizeRequestCallback`]: https://discord.com/developers/docs/social-sdk/classdiscordpp_1_1Client.html#a5f34b873e127a446c9ab549e4588ccd7