Windows
This article aims to introduce how to set up X authentication so that your game can use the Player Network login authentication service for login via the X channel.
Prerequisites
1. Set up your game on the X developer website
1. Create X application
It is recommended to register your account with a Tencent email address to increase the success rate of subsequent applications.
Follow the prompts to register a team developer account or individual developer account on the X developer website.After obtaining a developer account, you can create an application on the Developer Portal.
-
Create a new project.

-
Select a use case.Click Next.

-
Enter project description.Click Next.

-
Select application environment.Click Save.

-
Enter application name.Click Save.

-
After creating the application, obtain the API key and API secret key.Save this information.Click App Settings.
This page will not be displayed again, so be sure to save this information.
7. Click Set up.
8. Enable OAuth2.0 and OAuth1.0a.Select Web App for the application type.
9. Select Read And Write in application permissions.
10. Enter the callback URLs for the test and production environments.You will be redirected to the game’s official website.Click Save.
If the game is already live, existing callback URLs cannot be deleted, only added.
Applicable to Player Network SDK V1.15 and earlier versions on Android/iOS platforms
https://image.intlgame.com/v2/test/jssdk/twitterlogincallback.html
https://image.intlgame.com/v2/release/jssdk/twitterlogincallback.html
Applicable to Player Network SDK V1.16 and later versions on Android/iOS platforms and Windows platforms
https://test-common-web.intlgame.com/jssdk/twitterlogincallback.html
https://common-web.intlgame.com/jssdk/twitterlogincallback.html
When TWITTER_CONSUMER_USE_SDK is set to 1, to use X SDK login with INTLConfig.ini, add the following callback URLs:
twittersdk://
twitterkit-{API Key}://
Replace {API Key} with your game's API Key, without the curly braces .

2. Retrieve application information
You need X App ID and password to add X login channel in Player Network.

- Go to Player Network Console to create a new project for your game or join an existing project.
- Download SDK.
- Integrate SDK.
- Add X as a login authentication method for your business in Player Network Console.
Step 1: Configure SDK for X login
-
Open the 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
[X]
TWITTER_CONSUMER_KEY = {INTL_TWITTER_CONSUMER_KEY}
TWITTER_CONSUMER_SECRET = {INTL_TWITTER_CONSUMER_SECRET}- Set SDK backend environment to
INTL_URL = https://test.intlgame.com. - Replace
{INTL_GAME_ID}and{INTL_SDK_KEY}with the values ofGAME_IDandSDK_KEYassigned by the Player Network Console. - Set
LOG_LEVEL = 1,LOG_CONSOLE_OUTPUT_ENABLE = 1,LOG_FILE_OUTPUT_ENABLE = 1,LOG_ENCRYPT_ENABLE = 0, andLOG_COMPRESS_ENABLE = 0to output console and log files without encryption or compression. - Replace
{INTL_TWITTER_CONSUMER_KEY}and{INTL_TWITTER_CONSUMER_SECRET}with X API key and API Key Secret.
- Set SDK backend environment to
Step 2: Add X login
- Register login-related callbacks.
- Unity
- Unreal Engine
// Add callbacks
public void AddAuthObserver()
{
INTLAPI.AddAuthResultObserver(OnAuthResultEvent);
}
// Remove callbacks
public void RemoveAuthObserver()
{
INTLAPI.RemoveAuthResultObserver(OnAuthResultEvent);
}
// Process the INTLAuthResult callback
public void OnAuthResultEvent(INTLAuthResult ret)
{
Debug.Log($"MethodID: {ret.MethodId}");
string methodTag = "";
if (authRet.MethodId == (int)INTLMethodID.INTL_AUTH_LOGIN)
{
methodTag = "Login";
}
else if (authRet.MethodId == (int)INTLMethodID.INTL_AUTH_BIND)
{
methodTag = "Bind";
}
else if (authRet.MethodId == (int)INTLMethodID.INTL_AUTH_AUTOLOGIN)
{
methodTag = "AutoLogin";
}
else if (authRet.MethodId == (int)INTLMethodID.INTL_AUTH_QUERY_USER_INFO)
{
methodTag = "QueryUserInfo";
}
else if (authRet.MethodId == (int)INTLMethodID.INTL_AUTH_GET_AUTH_RESULT)
{
methodTag = "GetAuthResult";
}
}
C++ Event Handling (above v1.15)
//configure callback
FINTLAuthEvent authEvent;
authEvent.AddUObject(this, &OnAuthResult_Implementation);
UINTLSDKAPI::SetAuthResultObserver(authEvent);
// Remove callbacks
UINTLSDKAPI::GetAuthResultObserver().Clear();
void OnAuthResult_Implementation(FINTLAuthResult ret)
{
UE_LOG(LogTemp, Warning, TEXT("MethodID: %d"), ret.MethodId);
}
Unreal Event Handling
void OnAuthResult_Implementation(FINTLAuthResult ret)
{
UE_LOG(LogTemp, Warning, TEXT("MethodID: %d"), ret.MethodId);
}
- Call the
AutoLogininterface for automatic login.
- Unity
- Unreal Engine
INTLAPI.AutoLogin();
UINTLSDKAPI::AutoLogin();
- If automatic login fails, call the
Logininterface to allow players to manually log in.
- Unity
- Unreal Engine
INTLAPI.Login(INTLChannel.Twitter);
UINTLSDKAPI::Login(EINTLLoginChannel::kChannelTwitter);
- Synchronize client authentication status with the game backend and wait for the final verification result.
[Optional] Set email permissions
To obtain player email during X login, you must first enable the corresponding permission. Once enabled, email will be returned in the ChannelInfo of AuthResult.
- For compliance reasons, emails returned from specific sources can be masked as needed; please contact Player Network Assistant to enable this if required.
- You can report the hash of the email as
base64(sha256(email))in the backend transaction logs; please contact Player Network Assistant to enable this if required. - This is used to verify whether the player information or binding list contains
emailinformation; please contact Player Network Assistant to enable this if required.
-
In the User authentication settings of the X Developer Platform, check Request email from users.
-
Enable the email return feature on the Player Network Console by setting return_email to YES; for details, please refer to Third-party channel configuration.
Step 3: Acceptance test for login function
Search for the keyword "AuthResult" in the Player Network SDK logs to verify whether the channel name and OpenID have been correctly returned.If correct, the integration was successful and the login function has been added.
If you encounter issues during integration, please refer to FAQs.