iOS
本文旨在介绍如何设置 Kakao 身份验证,让您的游戏可以使用 Player Network 登录鉴权服务通过 Kakao 渠道登录。
前提条件
1. 在 Kakao Developers 上配置 Kakao 应用
1. 创建 Kakao 应用
前往 Kakao Developers 注册开发者账号,并联系 Player Network 管理员授权账号的企业认证。
-
进入 Kakao Developers。
-
创建应用并输入基本应用信息。
-
输入 iOS 相关的应用配置。
如果点击 KakaoTalk 消息需要将用户重定向到一个 URL,请将 URL 域名注册到 Web 平台中的 网站域名。
2. 为应用启用 Kakao 登录
-
将 Kakao 登录激活状态设置为 ON。
-
在 重定向 URI 中添加
https://kauth.kakao.com/oauth
。 -
根据下图设置登录权限和范围。
例如,登录后访问昵称和个人头像的范围。
3. 检索应用信息
进入 My Application > App Settings > Dashboard,查看应用的基本信息。
- 获取 Player Network 控制台登录账号。
- 为游戏创建新项目,或加入已有项目。
- 下载 SDK。
- 接入 SDK。
- 在 Player Network 控制台添加 Kakao 为业务的登录鉴权方式。
步骤1:为 Kakao 登录配置 SDK
Kakao SDK 仅与 iOS 12.0 及更高版本兼容。
-
在
info.plist
中,添加以下游戏配置:<key>KakaoGameConfiguration</key>
<dict>
<key>AppId</key>
<string>{INTL_KAKAO_APP_ID}</string>
<key>AppSecret</key>
<string>{INTL_KAKAO_APP_SECRET}</string>
<key>AppVersion</key>
<string>1.0.0</string>
<key>DebugLevel</key>
<string>verbose</string>
<key>ServerType</key>
<string>real</string>
</dict>- 将
{INTL_KAKAO_APP_SECRET}
替换为 获取 Kakao 信息 中的本地应用密钥。 - 将
{INTL_KAKAO_APP_ID}
替换为 获取 Kakao 信息 中的应用 ID。
- 将
-
在
info.list
中,添加以下LSApplicationQueriesSchemes
代码:<key>LSApplicationQueriesSchemes</key>
<array><string>com.kakaogames.sdk</string>
<string>kakao[AppSecret]</string>
<string>kakaokompassauth</string>
<string>storykompassauth</string>
<string>kakaolink</string>
<string>kakaotalk-4.5.0</string>
<string>kakaotalk-2.9.5</string>
<string>kakaotalk-3.0.0</string>
<string>kakao3rdauth</string>
<string>kakaostory-2.9.0</string>
<string>kakaotalk</string>
</array>将
[AppSecret]
替换为 获取 Kakao 信息中的本地应用密钥。 -
设置 URL 方案。
为 KakaoTalk 添加以下模式代码,以打开游戏应用:
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string></string>
<key>CFBundleURLSchemes</key>
<array>
<string>kakao[AppSecret]</string>
</array>
</dict>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLSchemes</key>
<array>
<string>kakaogame[AppId]</string>
</array>
</dict>- 将
[AppSecret]
替换为Retrieve Kakao Info 中的本地应用密钥。 - 将
[AppId]
替换为获取 Kakao 信息中的应用 ID。
- 将
步骤2:添加 Kakao 登录
网页登录请在支持 Chrome Custom Tabs 的浏览器上进行验证,例如 Chrome 浏览器。
-
注册登录相关回调。
- 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);
} -
调用
AutoLogin
接口自动登录。- Unity
- Unreal Engine
INTLAPI.AutoLogin();
UINTLSDKAPI::AutoLogin();
-
在自动登录失败时调用
Login
接口使玩家手动登录。- Unity
- Unreal Engine
INTLAPI.Login(INTLChannel.KaKao);
UINTLSDKAPI::Login(EINTLLoginChannel::kChannelKaKao);
-
与游戏后台同步客户端身份验证状态,等待最终验证结果。
步骤3:验收登录功能
在 Player Network SDK 日志中搜索关键字 "AuthResult" 确认渠道名称和 OpenID 是否正确返回。如果正确,则表明 集成配置成功,登录功能已成功添加。
如果接入过程中遇到问题,请参见 常见问题。