HarmonyOS 鸿蒙Next获取华为帐号Access Token报错{sub_error:20152,error_description:invalid code,error:1101}
HarmonyOS 鸿蒙Next获取华为帐号Access Token报错{sub_error:20152,error_description:invalid code,error:1101}
问题描述
项目集成了华为Accout SDK,参考官方文档请求获取Access Token,但是报错,返回:{sub_error:20152,error_description:invalid code,error:1101}。
问题分析
看报错提示是code失效了,官方文档中也描述code的有效期只有5分钟:
我也搜索过该错误码:
我是刚获取的数据,并且没有做任何的处理,确定不是这两个错误引起的异常。于是联系了华为的技术支持(可提单联系:https://developer.huawei.com/consumer/cn/support/feedback),发现我们提交的入参格式有问题,不应该进行拼接,应该以json字符串的格式传输。
问题解决
开始入参数据是以这种拼接的格式传输的,一直出现异常。
改成下面这种json字符串的格式传输,问题解决。
注意:还需要排查请求方式:使用POST,消息的请求头要加上:Content-Type: application/x-www-form-urlencoded
找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17
您遇到的HarmonyOS鸿蒙Next获取华为帐号Access Token报错问题,错误代码为{sub_error:20152, error_description:invalid code, error:1101},这通常指示您提供的授权码(code)无效或已过期。
此类错误常见于OAuth 2.0授权流程中,可能由以下几个原因引起:
-
授权码已使用:每个授权码只能使用一次。如果之前已经用该码成功获取过Access Token,则无法再次使用。
-
授权码过期:授权码通常有一个较短的有效期(如10分钟)。如果在此时间内未使用,码将失效。
-
重定向URI不匹配:请求授权码时使用的重定向URI必须与获取Access Token时使用的URI完全一致。
-
客户端ID或密钥错误:确保您使用的客户端ID和密钥与注册在华为开发者平台上的信息一致。
请检查上述可能的原因,并重新执行授权流程。确保每一步都正确无误,特别是授权码的生成和使用过程。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html