常见问题
本文档汇集使用服务端 SDK 可能出现的常见问题与解决方案。
API 调试台内获取 tenant_access_token/app_access_token 的示例代码,为什么提示找不到方法?
回答:
服务端 SDK 内已经封装了获取和缓存 tenant_access_token/app_access_token 的逻辑,在构建 API Client 时传入应用的 App ID 和 App Secret 即可,不需要手动获取 Token。
API 调试台内成功调用 API 后,使用示例代码调用失败是什么原因?
回答:
API 调试台中的示例代码是根据调试台内设置的参数自动生成的,如果存在代码问题,请先在调试台内配置好参数再使用代码,同时注意应用的 App ID 和 App Secret 需要手动配置。

应用的 App ID 和 App Secret 需登录开发者后台,在应用详情页的 凭证与基础信息 > 应用凭证 区域获取。

如何查看某个接口在 SDK 是否支持?
回答:
你可以直接查询接口文档,例如发送消息,有如下图所示的 尝试一下 按钮表示支持(不支持的 API 没有该按钮)。

点击按钮后可以调试 API、查阅示例代码。

SDK 不支持直接调用的接口、历史版本的接口,如何才能调用?
回答:
不同语言的 SDK 均提供了原生 API 调用方式,使用该方式可以通过传入 API 的 HTTP Method、URL 以及参数来调用。具体操作参见各 SDK 使用指南。
- Java SDK 指南 的 常见问题 章节。
- Go SDK 指南 的 常见问题 章节。
- Python SDK 指南 的 常见问题 章节。
- NodeJS SDK 指南 的 常见问题 章节。
使用下载导出文件接口时,文件名包含特殊字符导致下载报错如何解决?
回答:
系统逻辑存在特殊字符校验,你可以先使用 SDK 提供的原生模式调用 API。
详情参考:
- Java SDK 指南 的 常见问题 章节。
- Go SDK 指南 的 常见问题 章节。
- Python SDK 指南 的 常见问题 章节。
- NodeJS SDK 指南 的 常见问题 章节。
如何配置私有部署的飞书服务器或者代理服务器连接?
回答:
Java 示例代码以及配置说明,参考以下代码注释。
import com.lark.oapi.Client;
import com.lark.oapi.core.cache.LocalCache;
import com.lark.oapi.core.enums.BaseUrlEnum;
import com.lark.oapi.core.httpclient.OkHttpTransport;
import com.lark.oapi.core.response.RawResponse;
import com.lark.oapi.core.token.AccessTokenType;
import com.lark.oapi.okhttp.OkHttpClient;
import java.net.Proxy;
import java.util.concurrent.TimeUnit;
@Test
void init() {
Proxy proxy = Proxy.NO_PROXY; // 自定义代理服务器
Client client = Client.newBuilder("appId", "appSecret")
.openBaseUrl(BaseUrlEnum.FeiShu) // 设置域名,默认为飞书,支持重载String,设置私有部署飞书服务器
.httpTransport(new OkHttpTransport(
new OkHttpClient().newBuilder()
.readTimeout(3, TimeUnit.MINUTES) // 设置超时时间
.callTimeout(3, TimeUnit.MINUTES) // 设置超时时间
.proxy(proxy) // 设置使用代理服务器访问飞书服务器
.build()
))
.tokenCache(LocalCache.getInstance()) // 默认实现,本地带时间过期的缓存;可以自己实现ICache的接口,例如Redis缓存等
.logReqAtDebug(true) // 在 debug 模式下会打印 http 请求和响应的 headers,body 等信息。
.build();
}调用接口失败,有 code 和 logid 该如何排查?
回答:
接收事件时为什么重复收到事件体数据?
回答:
开放平台推送事件数据后,你的服务器需要在 3 秒内以 HTTP 200 状态码进行响应,否则开放平台认为本次推送失败,并会重新推送事件数据。详情参见事件推送周期和频次。
使用 TenantAccessToken/AppAccessToken 的示例代码获取的 Data 为NULL
回答:
该接口无 data 参数,且无需手动获取 TenantAccessToken,SDK 已做封装,直接调用业务接口即可。
调用接口的时候,出现 unsupported protocol scheme 错误。
回答:
该错误为请求使用了不被支持的协议方案,常见原因是配置 BaseUrl 参数时,未添加https://协议头。
dial tcp 23.12.147.37:443: i/o timeout错误
回答:
非字节租户如果出现这个问题,通常是因为公司设有防火墙,需要将 open.feishu.cn 这个域名加白
URL 包含 “?” 或 “#” 后缀时,如何设置重定向 URL?
回答:开发者后台的应用重定向 URL 列表内需要包含完整路径,如果路径后有 ? 或者 # 后缀,可以不包含在重定向 URL 中。 原因说明:在应用的重定向 URL 列表内配置的 URL,? 或 # 后缀不会生效。例如,http://www.example.com/#/index 作为重定向 URL 时,实际生效的 URL 为 http://www.example.com。 场景示例:
- 调用获取授权登录授权码接口时,
redirect_uri参数设置为http://www.example.com/#/index,对应在开发者后台的应用重定向 URL 列表中添加http://www.example.com即可。 - 如果是客户端调用 requestAccess 获取临时登录凭证 code,建议在当前页面调用
window.location.href.split('?')[0].split('#')[0]来获取重定向 URL。
“获取单个审批实例详情”接口在调试台可以正常返回,但是用 SDK 代码出现 approval code not found 错误
回答:
该问题多因用户在海外调试台调试接口导致:海外调试台默认使用域名 open.larksuite.com 发起请求,但 SDK 代码中 BaseUrl 默认配置为 open.feishu.cn,二者域名不匹配引发问题。
切换域名的方式如下:
GO:调用服务端 API 的构建API Client 模块
Java:调用服务端 API 的构建API Client 模块
Python:调用服务端 API 的构建API Client 模块
将调试台的示例代码复制到本地后,发现报错
示例:

可能的原因:
- SDK 版本较老,无法支持新的接口
- 示例代码有误,可以在 SDK 反馈群 @群主 反馈
解决方式:
- SDK 较老,则升级 SDK 的版本
- 示例代码有误,则先采用原生的方式调用,各个语言原生方式调用如下:
- Java SDK 指南 的 常见问题 章节。
- Go SDK 指南 的 常见问题 章节。
- Python SDK 指南 的 常见问题 章节。
- NodeJS SDK 指南 的 常见问题 章节。

