Telegram API中access_hash是什么?相关特性疑问咨询
access_hash的疑问解答 当调用contacts.resolveUsername时,返回结果总会包含id和access_hash,这是因为Telegram用access_hash做权限校验,确保API调用者是合法获取过目标实体(用户/频道/聊天)信息的请求方,避免恶意使用任意ID发起无授权请求。针对你提出的几个问题,具体解答如下:
它会随时间变化吗?
不会。正常情况下,access_hash与实体的id是永久绑定的,只有当实体本身被删除后重建(此时id也会改变),才会生成新的access_hash。它是否有实际意义?
有实际意义。它是由目标实体的id与你的账号授权信息通过加密算法生成的校验值,Telegram服务器会通过它验证你是否真的有权限访问该实体(比如你确实搜索过该用户名、加入过该群组),既可以防止无授权的API滥用,也能降低服务器的校验压力。将其存储在数据库中,能否确保它是恒定不变的?
可以。只要目标实体的id没有发生变更,对应的access_hash就不会改变。这也是pyrogram、telethon这类库会将access_hash存储在本地sqlite数据库的原因,后续调用需要id+access_hash的API时,直接取用存储的值即可,无需每次调用contacts.resolveUsername。它会因账号不同而不同吗?
会。access_hash是与发起请求的账号绑定的,不同账号调用contacts.resolveUsername获取同一个实体的access_hash数值是不一样的,每个账号对应的哈希值唯一。
内容的提问来源于stack exchange,提问作者winwin

