使用Python的SkPy发送Skype消息遇认证错误及安全登录咨询
解决SkPy登录时的
SkypeAuthException及无硬编码账号密码的实现方式 一、解决SkypeAuthException: Couldn't retrieve t field from login response错误
这个错误我之前踩过坑,核心原因是你用的SkPy 0.1版本太老旧了——微软的Skype登录API已经更新了验证流程,旧版本的库无法适配新的登录响应结构,所以会出现获取t字段失败的情况。
你可以按照以下步骤解决:
升级SkPy到最新版本
打开终端执行升级命令:pip install --upgrade skpy新版本的SkPy已经适配了微软最新的登录机制,能解决大部分验证相关的问题。
处理两步验证场景(如果开启了的话)
如果你Skype账号开启了两步验证,直接用账号密码登录还是会失败,这时候可以用令牌文件登录:from skpy import Skype # 第一次运行会弹出输入框让你输入账号密码,验证成功后令牌会保存到指定文件 sk = Skype(tokenFile="skype_token.txt") # 后续运行直接读取令牌文件,无需再输入账号密码 print(sk.user) # 输出当前登录用户信息 ch = sk.contacts["joe.4"].chat ch.sendMsg("这是一条测试消息")
二、无需硬编码账号密码的实现方式
当然有更安全的方式,推荐这几种:
令牌文件登录(最推荐)
就是上面提到的方法,第一次登录输入账号密码后,令牌会持久化到本地文件,后续运行直接读取令牌,既不用硬编码,也不用每次输入密码,安全性和便捷性都很高。通过环境变量读取账号密码
把账号密码设置为系统环境变量,代码中从环境变量读取,避免明文写在代码里:import os from skpy import Skype username = os.getenv("SKYPE_USERNAME") password = os.getenv("SKYPE_PASSWORD") sk = Skype(username, password)运行前先设置环境变量(Windows用
set SKYPE_USERNAME=你的账号,Linux/macOS用export SKYPE_USERNAME=你的账号)。调用本地已登录的Skype实例(局限性较大)
SkPy本身没有直接支持调用本地已登录的Skype客户端的API。如果是Windows系统,可以尝试通过Skype的COM接口实现,但这种方式需要熟悉COM编程,且跨平台性差,不如前两种方法实用。
内容的提问来源于stack exchange,提问作者DGMS89
相关产品推荐
相关产品推荐

