iOS
本文旨在介绍如何设置 Kakao 身份验证,让您的游戏可以使用 Player Network 登录鉴权服务通过 Kakao 渠道登录。
从 2024 年春季开始,对于需更新或上传至 Apple App Store Connect 的应用,开发者需明确 注明使用原因,以展示该应用如何使用 required reason API(需提交使用原因的 API)。更多信息,请参见 即将发布的第三方 SDK 要求。
由于 Kakao 的隐私清单尚未公布,目前 Player Network SDK 隐私清单中不包含对应的内容,详见 iOS 17 隐私清单。
前提条件
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 > Summary,查看应用的基本信息。
步骤1:为 Kakao 登录配置 SDK
Kakao SDK 仅与 iOS SDK 11 及以上版本兼容。
IDE:Xcode 13.0 或更高版本
iOS:iOS 11.0 或更高版本
在
info.list
中,添加以下游戏配置:<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 是否正确返回。如果正确,则表明集成配置成功,登录功能已成功添加。
如果接入过程中遇到问题,请参见 常见问题。