Athana SDK

For Games

账号服务

配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// DemoApplication.kt
class DemoApplication: Application() {
override fun onCreate() {
super.onCreate()
..

// -- Google 登录配置
val webClientId = "<Google-Cloud-Web-Client-Id>"
AccountServiceConfiguration.initialize(webClientId = webClientId)

// Athana SDK init
// ...
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// DemoApplication.java
public class DemoApplication extends Application {

@Override
public void onCreate() {
super.onCreate();
..

// -- Google 登录配置
String webClientId = "<Google-Cloud-Web-Client-Id>";
// 配置允许使用的三方登录方式
// 设置空列表或者 null 则表示全开启
List<SignInType> enableTypes = null;
AccountServiceConfiguration.initialize(enableTypes, webClientId);

// Athana SDK init
// ...
}

}

登录场景

使用内置登录UI

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// Example
private fun withUI() {
val options = listOf<SignInType>(...) // 配置玩家可用的第三方账号
Athana.getInstance().signInWithUI(
enabledType = options, // 不需要限制则可以传 null
privacyPolicyUrl = "https://xxxxxx.com", // 需要在内置界面显示隐私政策链接则需要传入
termsOfServiceUrl = "https://xxxxxx.com", // 需要在内置界面显示用户协议链接则需要传入
requestListener = object : AthanaRequestListener<AccountInfo> {
override fun onSuccess(result: AccountInfo) {
// 登录成功
}

override fun onError(error: AthanaError) {
// 登录异常
}
},
)
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// Example
private void withUI() {
List<SignInType> options = Arrays.asList(...); // 配置玩家可用的第三方账号,不需要限制则可以传 null
Long customUserId = <id >; // 游戏用户/角色ID,可选参数
String privacyPolicyUrl = "https://xxxxxx.com"; // 需要在内置界面显示隐私政策链接则需要传入
String termsOfServiceUrl = "https://xxxxxx.com"; // 需要在内置界面显示用户协议链接则需要传入
Athana.getInstance().signInWithUI(
new AthanaRequestListener<AccountInfo>() {

@Override
public void onError(@NonNull AthanaError athanaError) {

}

@Override
public void onSuccess(AccountInfo accountInfo) {

}
},
customUserId,
privacyPolicyUrl = "https://xxxxxx.com",
termsOfServiceUrl = "https://xxxxxx.com",
options
);
}

直接调用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// Example
private fun signIn() {
Athana.getInstance().signIn(
signInType = signInType, // 登录方式
ua = ua, // 设备信息,可使用 WebView 获取,或者传入 Unity 的UA值
customUserId = customUserId, // 玩家ID
requestListener = object : AthanaRequestListener<AccountInfo> {
override fun onSuccess(result: AccountInfo) {
// 登录成功
}

override fun onError(error: AthanaError) {
// 调用异常
}

}
)
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// Example
private void signIn() {
SignInType signInType = SignInType.FACEBOOK;
String ua = ...; // 设备信息,可使用 WebView 获取,或者传入 Unity 的UA值
String deviceId = null; // 有自定义需求可以传入,否则传 null
Long customUserId; // 游戏账号ID或角色ID
Map<String, Object> extra = null; // 扩展字段
Athana.getInstance().signIn(
signInType,
ua,
deviceId,
customUserId,
extra,
new AthanaRequestListener<>() {

@Override
public void onSuccess(AccountInfo accountInfo) {
// 登录成功
}

@Override
public void onError(@NonNull AthanaError athanaError) {
// 调用异常
}

}
);
}

三方账号管理

查询绑定状态

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// Example
private fun query() {
Athana.getInstance().queryAllAccountBind(null, object : AthanaRequestListener<TriAccountBindMap> {
override fun onSuccess(result: TriAccountBindMap) {
// 返回结果
// result.google 为 Google 账号绑定结果
if (result.google?.openId != null) {
// 已绑定 Google
}
// result.facebook - Facebook 绑定结果
// result.googlePlayGame - Google Play Games 绑定结果
// result.firebaseAuth - Firebase Auth 绑定结果
}

override fun onError(error: AthanaError) {
// 调用异常
}
})
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// Example
private void query() {
Athana.getInstance().queryAllAccountBind(null, new AthanaRequestListener<>() {

@Override
public void onSuccess(TriAccountBindMap result) {
// 返回结果
// result.google 为 Google 账号绑定结果
TriAccount g = result.getGoogle();
if (g != null && !g.getOpenId().isEmpty()) {
// 已绑定 Google }
// result.getFacebook() - Facebook 绑定结果
// result.getGooglePlayGame() - Google Play Games 绑定结果
// result.getFirebaseAuth() - Firebase Auth 绑定结果
}

@Override
public void onError(@NonNull AthanaError athanaError) {
// 调用异常
}


});
}

绑定

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Example
private fun binding(signInType: SignInType) {
Athana.getInstance().accountBinding(signInType, null, object : AthanaRequestListener<Boolean> {
override fun onSuccess(result: Boolean) {
if (result) {
// 绑定成功
}
}

override fun onError(error: AthanaError) {
// 调用异常
}
})
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Example
private void binding(SignInType signInType) {
Athana.getInstance().accountBinding(signInType, null, new AthanaRequestListener<>() {
@Override
public void onSuccess(Boolean result) {
if (result) {
// 绑定成功
}
}

@Override
public void onError(@NonNull AthanaError athanaError) {

}
});
}

解绑

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Example
private fun unbind(signInType: SignInType, openId: String) {
sdk.accountUnbind(signInType, openId, null, object : AthanaRequestListener<Boolean> {
override fun onSuccess(result: Boolean) {
if (result) {
// 解绑成功
}
}

override fun onError(error: AthanaError) {
// 调用异常
}
})
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Example
private void unbind(SignInType signInType, String openId) {
Athana.getInstance().accountUnbind(signInType, openId, null, new AthanaRequestListener<>() {
@Override
public void onSuccess(Boolean result) {
if (result) {
// 解绑成功
}
}

@Override
public void onError(@NonNull AthanaError athanaError) {
// 调用异常
}
});
}
0%