Skip to main content

Windows

The purpose of this article is to describe how to set up Discord authentication so that your game can be logged in through the Discord channel using the Player Network login authentication service.

Prerequisites

1. Configuring the application on the Discord Developer Platform
1.1. Create an Application
  1. Register and authenticate your account on the Discord official website
  2. Go to the Developer Platform and click New Application

Image: Create Application

  1. Enter your application name and click Create
  2. On the General Information page, obtain the APPLICATION ID

Image: Obtain App ID

  1. Configure the Discord App ID in INTLConfig.ini
1.2. Apply for SDK Access
  1. Go to the Developer Platform
  2. Click Games - Social SDK, fill out the form, and submit

Image: Fill in form 1

Image: Fill in form 2

Important

Before the official launch of your game, notify the Discord team in advance to enable production permissions.

1.3. Configure OAuth2
  1. Click OAuth2 and turn on the PUBLIC CLIENT option

Image: PUBLIC CLIENT

  1. Configure Redirects:
    • Android/iOS: discord-{YOUR_APP_ID}:/authorize/callback
    • PC: http://127.0.0.1/callback
    • Web: https://common-web.intlgame.com/jssdk/discordlogincallback.html,
      https://test-common-web.intlgame.com/jssdk/discordlogincallback.html

Image: Configure Redirects

note

For multi-store channel packs:

Support for multi-store channel packages requires a separate REDIRECT_URL_SCHEME.An App ID supports 10 redirect URLs (about 4 multi-store channel packs).If the project requires more than 4 multi-store channel packs, please request more App IDsTo use multiple application IDs, the game requires Configure multiple application IDs in INTLConfig.ini and Register multiple Discord applications on Player Network.

1.4. Configure Rich Presence Assets
  1. Click Rich Presence
  2. Click Add Image(s) to upload image assets

Image: Upload assets

  1. Create an account for Player Network Console.
  2. Create a new project for your game, or join an existing one.
  3. Download SDK.
  4. Integrate the SDK.
  5. Add Discord as the login authentication method for the service in the Player Network Console.

Step 1:Configuring the SDK for Discord Login

Open your project's INTLConfig.ini file:

INTLConfig.ini
[INTL environment]
# WARNING: You should change this URL to the production environment when you release your game.
INTL_URL = https://test.intlgame.com
GAME_ID = {INTL_GAME_ID}
SDK_KEY = {INTL_SDK_KEY}
[INTL Log]
LOG_LEVEL = 1
LOG_CONSOLE_OUTPUT_ENABLE = 1
LOG_FILE_OUTPUT_ENABLE = 1
LOG_ENCRYPT_ENABLE = 0
LOG_COMPRESS_ENABLE = 0

[Discord]
DISCORD_APP_ID = {INTL_DISCORD_APP_ID}
  • Set SDK backend environment to INTL_URL = https://test.intlgame.com.
  • Replace {INTL_GAME_ID} and {INTL_SDK_KEY} with the GAME_ID and SDK_KEY assigned by Player Network Console.
  • Set LOG_LEVEL = 1, LOG_CONSOLE_OUTPUT_ENABLE = 1, LOG_FILE_OUTPUT_ENABLE = 1, LOG_ENCRYPT_ENABLE = 0 and LOG_COMPRESS_ENABLE = 0 to output console logs and log files without encrypting or compressing the output without encrypting or compressing the output.
  • Replace {INTL_DISCORD_APP_ID} with the Discord App ID.

Step 2:Add Discord Login

Discord does not require an application to be installed before logging inIf the app is installed, it will be opened for login; otherwise, login will be opened in the browser.

  1. Registration of login-related callbacks.
// Add callbacks
public void AddAuthObserver()
{
INTLAPI.AddAuthResultObserver(OnAuthResultEvent);
}

// Remove callbacks
public void RemoveAuthObserver()
{
INTLAPI.RemoveAuthResultObserver(OnAuthResultEvent);
}

// Process the INTLAuthResult callback
public void OnAuthResultEvent(INTLAuthResult AuthResult)
{
Debug.Log($"MethodID: {AuthResult.MethodId}");

string methodTag = "";
switch (AuthResult.MethodId)
{
case (int)INTLMethodID.INTL_AUTH_LOGIN:
methodTag = "Login";
break;
case (int)INTLMethodID.INTL_AUTH_BIND:
methodTag = "Bind";
break;
case (int)INTLMethodID.INTL_AUTH_AUTOLOGIN:
methodTag = "AutoLogin";
break;
case (int)INTLMethodID.INTL_AUTH_QUERY_USER_INFO:
methodTag = "QueryUserInfo";
break;
case (int)INTLMethodID.INTL_AUTH_GET_AUTH_RESULT:
methodTag = "GetAuthResult";
break;
}
}
  1. Call the AutoLogin interface to log in automatically.
INTLAPI.AutoLogin();
  1. If automatic login fails, call the Login interface to let the player log in manually.
INTLAPI.Login(INTLChannel.Discord, "identify", "");
INTLAPI.Login(INTLChannel.Discord, "identify,relationships.read,activities.write", ""); //Friend functions
  1. Synchronize client authentication status with the game backend and wait for the final verification result.

Step 3: Acceptance testing for login functionality

Search for the keyword "AuthResult" in the Player Network SDK logs to confirm whether the channel name and OpenID are returned correctly.If correct, it means the integration configuration is successful, and login functionality has been successfully added.

If you encounter problems during the integration process, please refer to Frequently Asked Questions.