yihong0618 / MiService

XiaoMi Cloud Service for mi.com
MIT License
333 stars 88 forks source link

Error https://api.io.mi.com/app/home/device_list: Login failed #2

Open hujinttao opened 1 year ago

hujinttao commented 1 year ago

微信截图_20230328145536

登录失败,我检查了我的小米账号和密码没问题,我打印了登录的返回值,发现没有userId,是什么情况,我的小米账号需要配置什么嘛?

codingbylch commented 1 year ago

遭遇了同样的情况。可能是没有读取到账号密码:windows需要在环境变量中设置,设置后重启终端。

jjiikkkk commented 1 year ago

我从国外服务器折腾到国内服务器,账号和密码始终连不上去

danranmmm commented 1 year ago

我也遇到同样的问题,centos

danranmmm commented 1 year ago

遭遇了同样的情况。可能是没有读取到账号密码:windows需要在环境变量中设置,设置后重启终端。

你们的问题解决了吗

jjiikkkk commented 1 year ago

他们都是用的WLS来实现的,同时用AMD的服务器,SSH以及云端的CONSOLE全部会失败 还有一种方法是小米小爱开放平台申请API,这个自己搜索一下头条

zhangzimingmmz commented 1 year ago

我也一样,用的是腾讯云的ubuntu

jjiikkkk commented 1 year ago

别试了 没用的 要WLS

jjiikkkk commented 1 year ago

我折腾了几天后来放弃了,有空再去搞WLS吧,好在我有小米小爱开放平台的API 另外不需要小米音箱,普通音箱接API也可以的

testwhite commented 1 year ago

Exception: Error https://api2.mina.mi.com/admin/v2/device_list?master=0&requestId=app_ios_7xLQmOIVBC9bqdAaTrhe0MFyPop41j: Login failed 一样的手机正常登录,这个无法使用。也不知道为啥,window可以正常获取。

testwhite commented 1 year ago

image

litianc commented 1 year ago

海外ip环境下执行micli list出现同样报错,resp返回值里没有userId。切换到国内ip,返回正常,获取到设备信息。希望对遇到同样问题的人有帮助

jjiikkkk commented 1 year ago

没觉得国内的一样通不过

jjiikkkk commented 1 year ago

我还要去做WLS吗 好累啊 心累

litianc commented 1 year ago

WLS是什么? @jjiikkkk

testwhite commented 1 year ago

敢问大佬能不能把这个项目封装成.exe这样就省事多了。环境问题真是永远的坑

6vision commented 1 year ago

本地笔记本的wls可以执行到唤醒说出问题,但连不上openai,我配置了系统代理(微信机器人就可以正常连接使用)!用阿里云国内的服务器也是到这一步,再用国外的Azure服务器,就报错了login faild/////////怎么解决 image

tuihou123321 commented 1 year ago

我也报错了

Cannot connect to host sts.api.io.mi.com:443 ssl:True [SSLCertVerificationError: (1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1007)')]

woiweb commented 1 year ago

同问,macos,在公司电脑上安装的时候OK,在家里的电脑就不行了,方式都一样

aiohttp.client_exceptions.ClientConnectorCertificateError: Cannot connect to host sts.api.io.mi.com:443 ssl:True [SSLCertVerificationError: (1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1002)')] Error https://api.io.mi.com/app/home/device_list: Login failed

woiweb commented 1 year ago

Problem solved,you should reinstall the cerfificate,the comman as follow:

Navigate to cd /Applications/Python\ 3.7/

Click on Install Certificates.command

This should solve it.

refer to:https://github.com/aio-libs/aiohttp/issues/955#issuecomment-509119559

OnlyTL commented 1 year ago

他们都是用的WLS来实现的,同时用AMD的服务器,SSH以及云端的CONSOLE全部会失败 还有一种方法是小米小爱开放平台申请API,这个自己搜索一下头条

这个申请API怎么使用,我认证了开放平台,但是不知道怎么弄

jiangyanfeng commented 1 year ago

微信截图_20230328145536

登录失败,我检查了我的小米账号和密码没问题,我打印了登录的返回值,发现没有userId,是什么情况,我的小米账号需要配置什么嘛?

这个是因为海外登录,触发了双重验证。错误消息中的URL就是双重验证要求访问的地址。访问这个地址会先排除你是否是机器人,然后再给你的安全手机发一个短信验证码,短信验证码通过后,当前登录使用的IP才会到白名单上,下次不会再触发双重验证。

坑爹的是,在国内的服务器上,小米登录没问题,但访问 openai 有问题(搭梯子或使用代理都不方便)。在国外的服务器上,访问 openai 没问题了,但小米登录又触发双重验证了。这个双重验证目前必须人工进行。

chaoqunxie commented 1 year ago

你解决了么,我也遇到同样的报错

chaoqunxie commented 1 year ago

微信截图_20230328145536

登录失败,我检查了我的小米账号和密码没问题,我打印了登录的返回值,发现没有userId,是什么情况,我的小米账号需要配置什么嘛?

参考这个 解决了 https://github.com/Yonsm/MiService/issues/32

jjiikkkk commented 1 year ago

微信截图_20230328145536

登录失败,我检查了我的小米账号和密码没问题,我打印了登录的返回值,发现没有userId,是什么情况,我的小米账号需要配置什么嘛?

搞不定就不搞呗,我好久没弄了 还有其他方式可以弄

yihong0618 commented 1 year ago

@chaoqunxie thanks 感觉我们可以在 readme 里加一下

bobo-junjun commented 1 year ago

本地可以,服务器不行的可以试试。根据大佬的提示,我把location里面的地址拿到浏览器上,登录,验证之后,服务器还是登录不上。但是我坚信是因为新ip登录验证的问题,于是我换了另外一种方法,在服务器上安装x-ui,然后全局代理到本地,在本地登录一次,通过验证,即可,安装命令,bash <(curl -Ls https://raw.githubusercontent.com/vaxilu/x-ui/master/install.sh) 具体参考 https://github.com/vaxilu/x-ui。测试亚马逊和腾讯的vps可行,其他未试

Mczye commented 1 year ago

手机有登录小爱同学,用的手机热点网络 在vsc 里面直接访问MiService-main 文件夹 直接把: export MI_USER= export MI_PASS= 写入到micli.py 里面,直接运行micli.py不加list,成功获取了

yihong0618 commented 1 year ago

@Mczye nice 我把这个 issue 置顶

jjiikkkk commented 1 year ago

手机有登录小爱同学,用的手机热点网络 在vsc 里面直接访问MiService-main 文件夹 直接把: export MI_USER= export MI_PASS= 写入到micli.py 里面,直接运行micli.py不加list,成功获取了

vsc是什么,这样的话,国内vps就应该可以用了是吧 还是说 必须用海外的vps

其实接通的方法有很多个,只是都不如云服务器方便

Mczye commented 1 year ago

手机有登录小爱同学,用的手机热点网络 在vsc 里面直接访问MiService-main 文件夹 直接把: export MI_USER= export MI_PASS= 写入到micli.py 里面,直接运行micli.py不加list,成功获取了

vsc是什么,这样的话,国内vps就应该可以用了是吧 还是说 必须用海外的vps

其实接通的方法有很多个,只是都不如云服务器方便

Visual Studio Code 简写打顺手了,Pycharm也可以

Georege commented 9 months ago

windows下使用set 环境变量,然后运行micli list,如果密码包含特殊字符串 的确会报错 如果不想使用windows的wsl,可以安装git,使用右键的open git bash here,然后使用export 环境变量以后,执行micli list,虽然也报错,但是设备列表详情获取到了

gaidan1983 commented 9 months ago

本地笔记本的wls可以执行到唤醒说出问题,但连不上openai,我配置了系统代理(微信机器人就可以正常连接使用)!用阿里云国内的服务器也是到这一步,再用国外的Azure服务器,就报错了login faild/////////怎么解决 image 看看是不是没有额度了,我出的错误提示Error code: 429 - {'error': {'message': 'You exceeded your current quota, please check your plan and billing details.', 'type': 'insufficient_quota', 'param': None, 'code': 'insufficient_quota'}} 后来API 充了5刀 可以了

yihong0618 commented 9 months ago

本地笔记本的wls可以执行到唤醒说出问题,但连不上openai,我配置了系统代理(微信机器人就可以正常连接使用)!用阿里云国内的服务器也是到这一步,再用国外的Azure服务器,就报错了login faild/////////怎么解决 image 看看是不是没有额度了,我出的错误提示Error code: 429 - {'error': {'message': 'You exceeded your current quota, please check your plan and billing details.', 'type': 'insufficient_quota', 'param': None, 'code': 'insufficient_quota'}} 后来API 充了5刀 可以了

小爱回答这么生猛的么

maopucheng commented 9 months ago

我发现了一种可能性。 家里的网络,电信没有分配外网IP给你。现在电信默认给你分配了一个内网地址,没有公网地址。 我后来打电话给电信要求给一个外网IP,立刻就可以登录了。

yihong0618 commented 9 months ago

可以的!

waveboy800 commented 8 months ago

windows下使用set 环境变量,然后运行micli list,如果密码包含特殊字符串 的确会报错 如果不想使用windows的wsl,可以安装git,使用右键的open git bash here,然后使用export 环境变量以后,执行micli list,虽然也报错,但是设备列表详情获取到了

这个方式好

p3psi-boo commented 6 months ago

记录一下,一开始用 micli list 也是报错,然后用浏览器访问 mi.com 登录账号之后,再使用 micli 就可以了。推测是需要在同一个 ip 上操作。

Duuckjing commented 5 months ago

root@localhost:~# micli list Exception on login None: &39;NoneType' object has no attribute &39;encode' Traceback (most recent call last): File &34;/usr/local/lib/python3.9/dist-packages/miservice/miaccount.py", line 65, in login &34;hash": hashlib.md5(self.password.encode()).hexdigest().upper(), AttributeError: &39;NoneType' object has no attribute &39;encode' Error 链接 Login failed root@localhost:~ export MI_USER=xxxxxxx root@localhost:~# export MI_PASS=xxxxx root@localhost:~ micli list [ { "name&34;: "Router&34;, "model&34;: "xiaomi.router.r4a&34;, "did&34;: "xxxxxxxxxxxxxxxxxxxxxx&34;, "token&34;: "xxxxxxxxxx&34; } ]

yihong0618 commented 5 months ago

root@localhost:~# micli list Exception on login None: &39;NoneType' object has no attribute &39;encode' Traceback (most recent call last): File &34;/usr/local/lib/python3.9/dist-packages/miservice/miaccount.py", line 65, in login &34;hash": hashlib.md5(self.password.encode()).hexdigest().upper(), AttributeError: &39;NoneType' object has no attribute &39;encode' Error 链接 Login failed root@localhost:~ export MI_USER=xxxxxxx root@localhost:~# export MI_PASS=xxxxx root@localhost:~ micli list [ { "name&34;: "Router&34;, "model&34;: "xiaomi.router.r4a&34;, "did&34;: "xxxxxxxxxxxxxxxxxxxxxx&34;, "token&34;: "xxxxxxxxxx&34; } ]

try to login this https://cloud.mi.com/

d0zingcat commented 4 months ago

微信截图_20230328145536 登录失败,我检查了我的小米账号和密码没问题,我打印了登录的返回值,发现没有userId,是什么情况,我的小米账号需要配置什么嘛?

这个是因为海外登录,触发了双重验证。错误消息中的URL就是双重验证要求访问的地址。访问这个地址会先排除你是否是机器人,然后再给你的安全手机发一个短信验证码,短信验证码通过后,当前登录使用的IP才会到白名单上,下次不会再触发双重验证。

坑爹的是,在国内的服务器上,小米登录没问题,但访问 openai 有问题(搭梯子或使用代理都不方便)。在国外的服务器上,访问 openai 没问题了,但小米登录又触发双重验证了。这个双重验证目前必须人工进行。

我测试下来可能是因为我走了代理流量登陆的 所以就有问题了。 要解决也很简单,关闭所有代理,访问一下 https://mi.com 如果本来登陆的就退出,重新使用账号密码登陆一次。如果提示手机号是否还在用,则点还在用。 然后再尝试一下应该就拿得到设备 ID 列表了。