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

WTelegramClient设置2FA绑定邮箱遇PASSWORD_HASH_INVALID错误求助

解决Telegram 2FA绑定邮箱时的PASSWORD_HASH_INVALID错误

你的代码存在几个关键错误导致了该问题,以下是修正方案:

问题分析

  • 旧密码Hash生成错误:你错误地将new_password传入生成旧密码Hash的InputCheckPassword调用,若账号已有密码,必须用当前旧密码生成对应Hash;首次设置2FA时,旧密码Hash应为null。
  • 非法篡改current_algo:手动将accountPwd.current_algo设为null会破坏密码Hash生成逻辑,生成新密码Hash需使用accountPwd.new_algo。
  • 异常处理逻辑无效:捕获异常后直接传空字符串调用Account_ConfirmPasswordEmail毫无意义,该接口需传入邮箱收到的验证码,应在用户获取验证码后再调用。

修正后的代码

public async Task SetTwoAutorize()
{
    try
    {
        const string old_password = "你的当前密码"; // 账号已有密码时填写,首次设置留空或设为null
        const string new_password = "new_pass"; // 新2FA密码,设为null可禁用2FA
        const string target_email = "my_email"; // 要绑定的邮箱

        var accountPwd = await _Client.Account_GetPassword();

        // 生成旧密码Hash(仅账号已有密码时需执行)
        var oldPasswordHash = string.IsNullOrEmpty(old_password) 
            ? null 
            : await Client.InputCheckPassword(accountPwd, old_password);

        // 生成新密码Hash(使用原生new_algo,不篡改current_algo)
        var newPasswordHash = new_password == null 
            ? null 
            : await Client.InputCheckPassword(accountPwd, new_password);

        await _Client.Account_UpdatePasswordSettings(oldPasswordHash, new Account_PasswordInputSettings
        {
            email = target_email,
            flags = Account_PasswordInputSettings.Flags.has_email,
            new_password_hash = newPasswordHash?.A,
            new_algo = accountPwd.new_algo,
        });

        // 提示用户查收邮箱验证码,获取后再调用确认接口
        // string verificationCode = await GetUserInputVerificationCode();
        // await _Client.Account_ConfirmPasswordEmail(verificationCode);
    }
    catch (Exception e)
    {
        // 打印错误信息方便排查
        Console.WriteLine($"错误详情:{e.Message}");
    }
}

关键注意事项

  • 首次设置2FA时,old_password留空,oldPasswordHash设为null即可。
  • 调用Account_UpdatePasswordSettings成功后,Telegram会向目标邮箱发送验证码,必须调用Account_ConfirmPasswordEmail传入验证码才能完成邮箱绑定。
  • 确保InputCheckPassword方法对应正确算法:旧密码用current_algo,新密码用new_algo,不要手动修改对象属性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 13:07:12