You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

仅限企业用户的Android端Google SSO实现问题排查

排查与修正方案

一、Google Cloud Console配置排查

  • 内部项目与同意屏幕验证
    确认项目确实设置为内部类型(而非外部),同意屏幕的用户类型选择“内部”,且所有必填项(应用名称、隐私政策链接等)已完整配置,无遗漏项。
  • 客户端ID关联与匹配检查
    核对Android客户端ID的SHA1指纹和包名,确保与当前应用的签名配置完全一致(包括debug和release版本,若用debug测试需确认debug的SHA1已添加)。同时确认Web客户端ID已正确关联,未设置为仅允许特定账号访问。
  • 组织权限与账号范围验证
    检查Google Cloud Identity的组织设置,确保所有需登录的企业账号均属于该组织,未被排除在应用访问范围外。同时确认项目IAM权限中,企业账号所在的组织单元拥有访问该项目的权限。

二、代码逻辑修正

当前代码未限制仅企业账号登录,也未指定企业域名,这是核心问题之一。需修改GoogleSignInOptions配置并添加账号验证逻辑:

1. 配置企业域名限制

// 替换原有gso配置,添加企业域名指定
gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
        .requestEmail()
        // 替换为你的企业域名,例如@yourcompany.com
        .setHostedDomain("yourcompany.com")
        .build();

gsc = GoogleSignIn.getClient(this, gso);

2. 登录后验证企业账号

try {
    GoogleSignInAccount account = task.getResult(ApiException.class);
    String email = account.getEmail();
    // 二次验证邮箱域名,避免配置疏漏导致非企业账号登录
    if (email != null && email.endsWith("@yourcompany.com")) {
        navigateToSecondActivity();
    } else {
        Toast.makeText(getApplicationContext(), "仅允许企业账号登录", Toast.LENGTH_SHORT).show();
    }
} catch (ApiException e) {
    // 可根据错误码细化提示,如12500为配置错误、10为用户取消登录等
    Toast.makeText(getApplicationContext(), "登录失败: " + e.getStatusCode(), Toast.LENGTH_SHORT).show();
}

3. 适配新版ActivityResultAPI(SDK34推荐)

替换旧版onActivityResult为registerForActivityResult,提升兼容性:

// 在Activity的onCreate方法中初始化
ActivityResultLauncher<Intent> signInLauncher = registerForActivityResult(
        new ActivityResultContracts.StartActivityForResult(),
        result -> {
            if (result.getResultCode() == RESULT_OK && result.getData() != null) {
                Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(result.getData());
                try {
                    GoogleSignInAccount account = task.getResult(ApiException.class);
                    if (account.getEmail().endsWith("@yourcompany.com")) {
                        navigateToSecondActivity();
                    } else {
                        Toast.makeText(getApplicationContext(), "仅允许企业账号登录", Toast.LENGTH_SHORT).show();
                    }
                } catch (ApiException e) {
                    Toast.makeText(getApplicationContext(), "登录失败: " + e.getStatusCode(), Toast.LENGTH_SHORT).show();
                }
            }
        }
);

// 触发登录的方法
private void startSignIn() {
    Intent signInIntent = gsc.getSignInIntent();
    signInLauncher.launch(signInIntent);
}

三、企业账号与设备排查

  • 账号状态验证
    确认无法登录的企业账号未被冻结、暂停,且已正确加入Google Cloud Identity组织。可尝试用该账号登录Google Workspace管理后台,验证账号状态正常。
  • 设备环境测试
    检查测试设备是否登录多个Google账号,可暂时仅保留需测试的企业账号重新测试;同时清除应用缓存和数据后,再次尝试登录。

内容的提问来源于stack exchange,提问作者Vasu Shanmugam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 19:18:22