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

如何使用微软Face API识别用户?Android创建PersonGroup报错求助

解决Person Group ID无效的问题

看起来你在使用原微软Project Oxford Face API(现在的Azure Face API)创建PersonGroup时遇到了Person group ID is invalid的错误,这个问题几乎都是因为传入的ID不符合API的格式规范导致的,我来帮你一步步排查解决:

首先明确PersonGroup ID的强制格式要求

Azure Face API对PersonGroup ID有严格的规则,必须满足以下所有条件:

  • 长度在1到64个字符之间(不能为空,也不能太长)
  • 只能包含ASCII字母、数字,以及以下特殊符号:-、_、?、.、,
  • 不能包含空格、中文、非ASCII字符或者其他未允许的特殊符号(比如@、#、!这些都不行)

你的代码可能存在的问题

你的createPersonGroup函数本身逻辑没问题,但问题大概率出在调用这个函数时传入的personGroupId参数不符合上面的规则,比如:

  • 传入了空字符串或者长度超过64的字符串
  • 包含了空格、中文或者像@这类非法符号
  • 有前后未注意到的空格

解决方案

1. 先给ID做格式校验

在调用API创建PersonGroup之前,先校验ID是否合法,避免无效请求。可以写一个工具函数来做这件事:

fun isValidPersonGroupId(id: String): Boolean {
    // 正则匹配允许的字符和长度范围
    val validPattern = Regex("^[a-zA-Z0-9-_?,\\.]{1,64}$")
    // 先去掉前后空格再校验,避免空格导致的无效
    return validPattern.matches(id.trim())
}

2. 修改createPersonGroup函数,加入校验逻辑

在调用Face API之前先检查ID合法性,提前抛出明确的错误提示,方便调试:

public fun createPersonGroup(personGroupId: String, personGroupName: String) {
    val trimmedId = personGroupId.trim()
    if (!isValidPersonGroupId(trimmedId)) {
        throw IllegalArgumentException(
            "Person group ID格式无效:请确保长度在1-64字符之间,仅允许字母、数字和-_?, .符号"
        )
    }
    faceServiceClient.createPersonGroup(trimmedId, personGroupName, null)
}

3. 检查调用时传入的ID

确保你调用createPersonGroup时传入的ID符合要求,比如:

  • 不要用用户输入的原始字符串(比如用户名)直接作为ID,最好做过滤或转换(比如把非法字符替换成-或者去掉)
  • 避免使用动态生成的过长字符串,比如UUID可以直接使用(UUID的-是允许的,长度也在64以内)

额外提醒

如果还是不确定问题出在哪,可以先手动传入一个绝对合法的ID测试,比如"test-group-001",如果这个能成功创建,那就是你之前传入的ID确实不符合规范,针对性调整即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 10:08:17