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

Android集成Intercom实时聊天出现token_not_found报错如何解决

Intercom集成token_not_found报错解决方案

错误根因

你日志返回的token_not_found属于Intercom身份校验失败,核心原因有三类:基础配置错误、用户注册参数错误、执行逻辑时序错误,可按以下步骤逐一排查:

排查步骤

  1. 核查初始化配置
    确认Intercom.initialize传入的intercom_api_key和intercom_app_id是从Intercom后台「设置 - 安装 - Android」页面获取的专属参数,不要混淆iOS、Web端的密钥,检查字符串资源中是否存在多余空格、字符错漏。

  2. 修正用户注册参数

  • withUserId传入的是你自有业务系统中当前用户的唯一标识ID(如你App自身的用户uid),不是Intercom提供的client_id、secret_id这类平台参数,保证每个用户对应唯一ID即可。
  • 如果你在Intercom后台开启了「Identity Verification(身份验证)」功能,必须同步传入用户签名HMAC:该值不能硬编码在客户端,需要由你的服务端用Intercom提供的身份验证密钥,结合当前用户的UserId计算后通过接口返回给前端,空值会直接触发未授权报错。
  • 如果是未登录的匿名用户,不要调用registerIdentifiedUser,改用registerUnidentifiedUser()注册即可。
  1. 调整执行时序
    registerIdentifiedUser是异步操作,你现有代码在调用后直接执行updateUser、displayMessenger,会出现用户还未注册完成就触发后续接口请求的问题,导致身份校验失败,调整为注册成功后再执行后续操作即可:
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    Intercom.client().setLauncherVisibility(Intercom.Visibility.VISIBLE)
    
    // 替换为自有业务当前用户的唯一ID
    val customUserId = "your_app_user_unique_id"
    val registration = Registration.create().withUserId(customUserId)
    
    // 开启了身份验证才需要添加这行,userHash从你后端接口获取
    // registration.withUserHash("server_backend_returned_hmac")
    
    Intercom.client().registerIdentifiedUser(registration)
        .onSuccess {
            // 注册成功后再执行后续操作
            Intercom.client().updateUser(userAttributes)
            Intercom.client().displayMessenger()
        }
        .onFailure { err ->
            Log.e("IntercomDebug", "用户注册失败", err)
        }
}

额外排查点

如果以上步骤都无法解决,请检查:

  • Intercom后台对应API key是否处于启用状态,Android端Messenger访问权限是否开启
  • 测试环境是否使用了代理、VPN,这类网络工具可能会拦截Intercom的API请求导致未授权报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 05:36:00