跳转至

Android

本指南提供了在 Hive SDK Android 中设置身份验证功能的说明。

添加功能

您需要添加与模块级 build.gradle 文件对应的外部库。仅添加您将使用的身份验证功能。

以下是将外部库添加到模块级build.gradle文件的示例。

dependencies {
   // Feature-specific settings. Add only the features you are using.
    // AuthV4 Device Management
   implementation "com.com2us.android.hive:hive-authv4-device-management"
   // AuthV4 Google In-App Update
   implementation "com.com2us.android.hive:hive-authv4-google-inappupdate"
   // AuthV4 Google reCAPTCHA
   implementation "com.com2us.android.hive:hive-authv4-google-recaptcha"
   // AuthV4 Real Name Verification (China)
   implementation "com.com2us.android.hive:hive-authv4-real-name-verification"
}

添加身份提供者

将外部库添加到模块级别的 build.gradle 文件中。仅添加您将使用的 IdP。

以下是将外部库添加到模块级 build.gradle 文件的示例。可以在不添加任何库的情况下使用 访客登录 功能。

dependencies {
    // IdP-specific settings. Add only the IdPs you are using.

    // Apple Login
    implementation "com.com2us.android.hive:hive-authv4-provider-apple-signin"

    // Facebook Login
    implementation "com.com2us.android.hive:hive-authv4-provider-facebook"

    // Google Play Games Login
    // `hive-authv4-provider-google-playgames` includes the `play-service-games-v2` library.
    implementation "com.com2us.android.hive:hive-authv4-provider-google-playgames"

    // Google Login
    // Google Play Games Login and Google Login are different login methods.
    implementation "com.com2us.android.hive:hive-authv4-provider-google-signin"

    // Membership Login
    implementation "com.com2us.android.hive:hive-authv4-provider-hive-membership"

    // Huawei Login
    implementation "com.com2us.android.hive:hive-authv4-provider-huawei"

    // LINE Login
    // To apply the LINE library, minSdkVersion 24 or higher is required.
    implementation "com.com2us.android.hive:hive-authv4-provider-line"

    // QQ Login
    implementation "com.com2us.android.hive:hive-authv4-provider-qq"

        // Steam Login
        implementation "com.com2us.android.hive:hive-authv4-provider-steam"

    // VK library requires targetSdkVersion 32 or higher.
    implementation "com.com2us.android.hive:hive-authv4-provider-vk"

    // WeChat Login
    implementation "com.com2us.android.hive:hive-authv4-provider-wechat"

    // Weverse Login
    implementation 

        // X Login
    implementation "com.com2us.android.hive:hive-authv4-provider-x"

    // Telegram Login
    implementation "com.com2us.android.hive:hive-authv4-provider-telegram"

        // Xiaomi Login
    implementation "com.com2us.android.hive:hive-authv4-provider-xiaomi-oauth"

    // animateGO 登录
    implementation "com.com2us.android.hive:hive-authv4-provider-animatego-oauth"

    // DMM 登录
    implementation "com.com2us.android.hive:hive-authv4-provider-dmm"
}

hive_config.xml中输入每个IdP的关键值

hive_config.xml中输入从每个IdP控制台获得的密钥值。有关更多详细信息,请参阅身份验证先决条件

由 IdP 提供的附加设置

根据身份提供者(IdP),需要额外的配置。

Google Sign-in IdP 设置

Note

从 Hive SDK 26.4.0 开始,Google 登录可选择 Google SignIn 或 Google Credential Manager 方式。

  • hive-authv4-provider-google-signin: 使用 Play Services 库处理 Google 登录。
  • hive-authv4-provider-google-credential-signin: 使用 Credential Manager 库处理 Google 登录。
    • 需要 Gradle 8.x 或更高版本

现有基于 Play Services 库的 Google 登录已于 2024 年 9 月弃用 (Deprecated),原计划于 2025 年移除。但目前 Google 仍继续支持该库。
为了稳定的服务运营,Google 建议从 Play Services 迁移到 Credential Manager

Hive SDK 同时支持 Play Services 和 Credential Manager 两种方式。Google 确定移除 Play Services 的计划后,我们将通过 Hive SDK 更新进行说明。

Google Play 游戏登录 IdP 设置

要使用 Google Play 游戏登录,请按如下方式进行设置。

AndroidManifest.xml 设置

这是Google Play服务的配置。它是Google Play游戏登录设置所需的值。

<manifest>
    <application>
    <meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/game_services_project_id"/>
    </application>
</manifest>

Facebook IdP 配置

要使用 Facebook 登录,请根据以下说明配置 AndroidManifest.xml

首先,设置 FacebookContentProvider 以分享游戏应用中的链接、图片或视频。通过将 Facebook AppID 附加到 com.facebook.app.FacebookContentProvider 作为 android:authorities 属性的值来输入 Facebook AppID。可以在 Facebook 控制台 中找到注册的游戏应用的应用 ID。



示例:当 FacebookAppID 为 123456789

<provider android:authorities="com.facebook.app.FacebookContentProvider123456789"
    android:name="com.facebook.FacebookContentProvider"
    android:exported="true"/>
Warning

要启用Facebook分享,声明FacebookContentProvider权限将防止市场特定的Android构建(例如,Google Play商店,ONE商店)同时安装。
如果您不使用Facebook分享,请参考故障排除指南以删除FacebookContentProvider权限的声明。

添加 Facebook AppId 和客户端令牌配置的设置(Facebook v13 及以上版本所需)。有关 Facebook 客户端令牌,请参阅 Facebook 控制台 中的 应用设置 > 高级设置



示例:当 FacebookAppID 为 123456789 时

<meta-data
    android:name="com.facebook.sdk.ApplicationId"
    android:value="fb123456789"/>

示例:当 Facebook 客户端令牌为 123456789

<meta-data
    android:name="com.facebook.sdk.ClientToken"
    android:value="fb123456789"/>
Note

您还可以在string.xml文件中设置Facebook AppId和客户端令牌。在这种情况下,设置android:value时不需要fb前缀。有关更多详细信息,请查看这里

QQ/WeChat IdP 配置

如果您支持 QQ 或微信 IdP,请申请以下附加内容。


在模块级build.gradle文件中设置libs文件夹的依赖。

dependencies {
   implementation fileTree(include: ['*.jar'], dir: 'libs')
   implementation fileTree(include: ['*.aar'], dir: 'libs')
}

从模块级libs文件夹(.aar/.jar)中添加SDK分发版本的外部库。分发版本中包含的外部库列表如下。

  • mid-sdk-2.10.jar (在支持 QQ IdP 登录时添加此文件)
  • mta-sdk-2.0.0.jar (在支持 QQ 或微信 IdP 登录时添加此文件)
  • open_sdk_3.5.4.11_r3f56456_lite.jar (在支持 QQ IdP 登录时添加此文件)

华为 IdP 配置

  1. 添加agconnect-services.json
    • 将从华为控制台下载的agconnect-services.json文件添加到项目文件夹中。
  2. 配置项目 - build.gradle 文件
    • 添加 AppGallery Connect 插件和 Maven 地址。
      buildscript {
          repositories {
              google()
              jcenter()
              // 华为 HMS Core SDK.
              maven {url 'https://developer.huawei.com/repo/'}
          }
          dependencies {
              ...
              // 华为 AppGallery Connect 插件
              classpath 'com.huawei.agconnect:agcp:1.9.1.301'
          }
      }
      allprojects {
          repositories {
              google()
              jcenter()
              /// 华为 HMS Core SDK.
              maven {url 'https://developer.huawei.com/repo/'}
          }
      }  
      
  3. 配置应用 - build.gradle 文件
    • 添加华为认证库和插件。
      dependencies {
          // 华为依赖
          implementation "com.com2us.android.hive:hive-authv4-provider-huawei" // 华为认证
      }
      apply plugin: 'com.huawei.agconnect'
      

VK IdP 配置

要使用 VK 登录,请按如下方式设置。

androidmanifest.xml 设置

VK 登录重定向所需的设置。

<manifest>
    <application>
        <activity
            android:name="com.hive.authv4.provider.vk.HiveProviderVkActivity"
            android:configChanges="colorMode|density|keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|locale|fontScale|layoutDirection"
            android:exported="true"
            android:launchMode="singleTask">

            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />

                <data android:scheme="vk${vkClientId}" />
                <data android:host="vk.com" />
            </intent-filter>

        </activity>
    </application>
</manifest>

小米 IdP 配置

要使用小米登录,您需要配置从小米控制台获得的小米AppId和小米AppKey。

AndroidManifest.xml 设置

<meta-data
    android:name="miGameAppId"
    android:value="${xiaomiAppId}" />
<meta-data
    android:name="miGameAppKey"
    android:value="${xiaomiAppKey}" />
<!-- user OAID -->
<meta-data
    android:name="miGameEnhance"
    android:value="false" />

Settings.gradle maven 配置

maven {
    url "https://repos.xiaomi.com/maven"
    credentials {
        username 'mi-gamesdk'
        password 'AKCp8mYeLuhuaGj6bK1XK7t2w4CsPuGwg6GpQdZ9cat7K59y5sD7Tx3dHjJcFrBGj3TQ4vi7g'
    }
}

Build.gradle libs 配置

dependencies {
    // hive-china-xiaomi-wrapper-xxxxxxxx.aar 
    implementation fileTree(include: ['*.aar'], dir: 'libs')
}

animate Games Online IdP 设置

Note

animate Games Online 登录仅支持 Android 平台。

要使用 animate Games Online 登录,请按如下方式进行设置。

hive_config.xml 设置

将 animate Games Online 登录所需的 clientId 填写到 hive_config.xml 中。需要设置的键列表请参考使用 animate GO 登录

Callback URL / Redirect URI 设置

要使 animate Games Online 登录回调正常工作,需要在 animate Games Online 开发者控制台中注册 Callback URL 和 Redirect URI。详情请参考 animate Games Online Callback URL / Redirect URI 设置

添加 AAR 库

在模块级 build.gradle 文件中设置 libs 文件夹的依赖。

dependencies {
    implementation fileTree(include: ['*.aar'], dir: 'libs')
}

在模块级 libs 文件夹中添加 SDK 发行版本中包含的外部库 (.aar)。支持 animate Games Online IdP 登录及计费时需要以下文件。

  • sdk-XXXXXXXXXXXXXXXXXXXXXXX.aar
    • 示例:sdk-bf62685719935e68ec4100c0d51aa469.aar

AndroidManifest.xml 设置

要使应用能够接收 animate Games Online 登录回调,请在处理登录回调的 Activity 的 intent-filter 中添加 host hivegame

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <!-- 为防止接收 animateGO 登录回调时在应用选择列表中重复显示,添加 host -->
    <data android:scheme="${applicationId}" />
    <data android:host="hive" />
    <data android:host="game" />
</intent-filter>

DMM IdP 配置

Note

Android 版的 DMM 认证通过 DMM Games Store 应用将认证信息注册到 DMM 服务器后使用,并以 Hive AuthV4 的 IdP provider(hive:authv4:provider:dmm)形式提供。

Android DMM 登录与 Google、Apple 等其他 IdP 相同,通过调用 AuthV4.signIn(ProviderType.DMM) 使用,DMM SDK 的初始化、登录、签名验证的关联处理均由 provider 在内部完成。

获取 DMM 凭证

请先在 DMM GAMES 开发者控制台中注册包名、应用信息等 Android 应用信息,然后获取以下凭证。DMM 认证使用 OpenSocial 系列和 AuthSDK 系列两种凭证。

分类 说明
OpenSocial appId OpenSocial 应用 ID,同时是 makeRequest 中的 opensocial_app_id 值,并用于签名验证
OpenSocial consumerKey, consumerSecret 用于签名的 consumer 凭证,应用注册后可在 DMM 控制台中查看
AuthSDK clientId, clientSecret, secretKey OAuth2 登录凭证,由设备端的 DMM AuthSDK 使用,不会传输到 Hive 服务器,需另行向 DMM 申请后获取
AuthSDK redirectUri OAuth2 回调 scheme,由 DMM 绑定到 clientId,在申请时一并提供

hive_config.xml DMM 配置块设置

将获取的凭证填写到 hive_config.xml 中。需要设置的键列表请参考 使用 DMM 登录

redirectUri(scheme) 设置

redirect_uri 是类似 comXXX://auth 的自定义 scheme,需要在申请 clientId 时一并提交并获得 DMM 认证后才能使用。由于该值会绑定到 clientId,如果使用未经认证的值,登录时会出现 DMM 错误 E210019 (error_redirect_uri_unavailable)

build.gradle 中注入 redirect scheme。

manifestPlaceholders += [hiveDmmRedirectScheme: "comXXX"]

Gradle 依赖及仓库设置

在根 settings.gradledependencyResolutionManagement { repositories } 中添加 DMM Maven 仓库。由于 Gradle 仓库声明不具有传递性,若未在应用构建中声明,将导致 DMM SDK(link-id-sdkAuthSDK)解析失败。

maven { url 'https://repos-app.games.dmm.com/' }

在 Config Editor 中设置 Client 凭证

在 Config Editor 中指定 Client 凭证。

属性 必需 说明
appId O 生产环境 OpenSocial 应用 ID
consumerKey / consumerSecret O 生产环境 consumer 签名凭证
clientId / clientSecret / secretKey O AuthSDK OAuth2 登录凭证
redirectUri O OAuth2 redirect_uri,必须与在 DMM 中注册的值一致