使用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
相关产品推荐
相关产品推荐

