Android SDK 开发指南
本文介绍如何在 Android 原生项目中接入 TapTap 登录。
集成前准备
- 参考 开发者中心配置 创建应用、配置包名与签名证书
- 参考 TapTap 登录功能介绍开通 TapTap 登录服务
- 参考 Android 集成指南 完成 TapSDK 基础接入
SDK 获取
在 app module 的 build.gradle 中添加对应依赖:
dependencies {
implementation 'com.taptap.sdk:tap-core:4.11.0'
implementation 'com.taptap.sdk:tap-login:4.11.0'
}
工程配置
该模块依赖如下权限:
| 权限 | 使用目的 | 权限申请时机 |
|---|---|---|
| 网络权限 | 用于访问网络数据 | 用户首次使用该功能时会申请权限 |
该模块将在应用中添加如下配置:
<uses-permission android:name="android.permission.INTERNET"/>
发起登录
在用户点击 TapTap 登录按钮后调用,并传入当前 Activity。授权范围必须包含 public_profile 或 basic_info,可按业务组合其他权限。
| 权限 | 说明 |
|---|---|
public_profile | 获得 openId、unionId、用户昵称、用户头像 |
basic_info | 获得 openId 和 unionId |
user_friends | 获得访问 TapTap 好友相关数据的权限 |
提示
若只请求 basic_info,用户可使用无感登录,无需手动确认授权。
- Android Java
- Android Kotlin
import com.taptap.sdk.kit.internal.callback.TapTapCallback;
import com.taptap.sdk.kit.internal.exception.TapTapException;
import com.taptap.sdk.login.Scopes;
import com.taptap.sdk.login.TapTapAccount;
import com.taptap.sdk.login.TapTapLogin;
import androidx.annotation.NonNull;
String[] scopes = new String[]{Scopes.SCOPE_PUBLIC_PROFILE};
TapTapLogin.loginWithScopes(activity, scopes, new TapTapCallback<TapTapAccount>() {
@Override
public void onSuccess(TapTapAccount tapTapAccount) {
// 登录成功,建立游戏登录态
}
@Override
public void onFail(@NonNull TapTapException exception) {
// 登录失败,记录错误并允许重试
}
@Override
public void onCancel() {
// 用户取消登录,不要提示为系统错误
}
});
import com.taptap.sdk.kit.internal.callback.TapTapCallback
import com.taptap.sdk.kit.internal.exception.TapTapException
import com.taptap.sdk.login.Scopes
import com.taptap.sdk.login.TapTapAccount
import com.taptap.sdk.login.TapTapLogin
val scopes = arrayOf(Scopes.SCOPE_PUBLIC_PROFILE)
TapTapLogin.loginWithScopes(
activity,
scopes,
object : TapTapCallback<TapTapAccount> {
override fun onSuccess(result: TapTapAccount) {
// 登录成功,建立游戏登录态
}
override fun onCancel() {
// 用户取消登录,不要提示为系统错误
}
override fun onFail(exception: TapTapException) {
// 登录失败,记录错误并允许重试
}
}
)
| 参数 | 类型 | 必选 | 说明 |
|---|---|---|---|
activity | Activity | 是 | 用于展示登录页面的当前 Android Activity。 |
scopes | String[] | 是 | 本次登录请求的授权范围,必须包含 public_profile 或 basic_info。 |
callback | TapTapCallback<TapTapAccount> | 是 | 接收登录成功、用户取消和登录失败结果。成功时返回 TapTapAccount。 |
获取当前用户
游戏启动时先调用该接口。该接口没有参数,返回本地缓存的 TapTapAccount;没有可用登录信息时返回 null。如果本地已有有效登录信息,不要再弹出登录按钮。
- Android Java
- Android Kotlin
import com.taptap.sdk.login.AccessToken;
import com.taptap.sdk.login.TapTapAccount;
import com.taptap.sdk.login.TapTapLogin;
TapTapAccount taptapAccount = TapTapLogin.getCurrentTapAccount();
if (taptapAccount != null) {
// 用户已登录
AccessToken accessToken = taptapAccount.getAccessToken();
String openId = taptapAccount.getOpenId();
} else {
// 用户未登录,显示登录按钮
}
import com.taptap.sdk.login.TapTapAccount
import com.taptap.sdk.login.TapTapLogin
val taptapAccount = TapTapLogin.getCurrentTapAccount()
if (taptapAccount != null) {
// 用户已登录
val accessToken = taptapAccount.accessToken
val openId = taptapAccount.openId
} else {
// 用户未登录,显示登录按钮
}
| 字段 | 说明 |
|---|---|
accessToken | 玩家在 TapTap 平台的用户 token。服务端调用 OpenAPI 时使用,见 获取用户信息 |
openId | 用户在当前游戏内的唯一标识 |
unionId | 用户在同一厂商下所有游戏中的统一标识 |
name | TapTap 昵称 |
avatar | TapTap 头像 URL |
登出
登出只清除本地缓存的 TapTap 登录信息,不会退出 TapTap 客户端。
- Android Java
- Android Kotlin
import com.taptap.sdk.login.TapTapLogin;
TapTapLogin.logout();
import com.taptap.sdk.login.TapTapLogin
TapTapLogin.logout()
接入验证
| 场景 | 预期结果 |
|---|---|
| 初始化完成后点击登录 | 回调 onSuccess、onCancel 或 onFail 之一 |
| 已安装 TapTap 客户端 | 拉起客户端完成授权 |
| 未安装 TapTap 客户端 | 进入 WebView 授权 |
| 登录成功后重启应用 | getCurrentTapAccount() 返回当前账号 |
调用 logout() | 本地登录信息被清除,可重新发起登录 |
| 用户取消登录 | 回调 onCancel(),不提示系统错误 |