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

使用WTelegram Client获取活跃会话哈希值返回0的问题求助

解决WTelegramClient获取会话hash为0的问题

问题原因

Telegram API不会返回当前活跃会话的有效hash值,直接返回0,目的是防止客户端误踢掉自己的当前会话。你代码中匹配到的api_id对应的正好是当前设备的会话,所以hash为0,调用Account_ResetAuthorization自然无效。

修正方案

  • 遍历会话时跳过hash == 0的条目(这就是当前会话)
  • 改用正确的异步写法,避免Task.Run().Result导致的死锁问题
  • 确保匹配的api_id是其他设备的会话,而非当前设备

修正后的代码示例

// 正确的异步方法写法
async Task LogoutOtherSessions(int targetApiId)
{
    var authorizations = await clienttelegram2.Account_GetAuthorizations();
    foreach (var item in authorizations.authorizations)
    {
        // 跳过当前会话(hash为0),只处理其他会话
        if (item.hash != 0 && item.api_id == targetApiId)
        {
            bool logoutOk = await clienttelegram2.Account_ResetAuthorization(item.hash);
            // 可在此处理注销结果
            break;
        }
    }
}

// 调用方法
await LogoutOtherSessions(XXXXXXX);

额外说明

如果需求是注销除当前会话外的所有其他会话,可以直接使用无参的Account_ResetAuthorizations方法,无需遍历单个会话:

bool logoutAllOk = await clienttelegram2.Account_ResetAuthorizations();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 16:03:12