阿落
阿落
  • 发布:2023-04-08 12:25
  • 更新:2023-09-30 11:32
  • 阅读:1643

uni-im外部系统联登报错uni-id-illegal-request

分类:uniCloud

在调试外部系统联登报错uni-id-illegal-request
前情说明: 使用别人的云函数URL和appId时, 返回正确
切换到我的URL和appId之后就报错: uni-id-illegal-request
可以确定java代码没有问题.

public static void main(String[] args) throws IOException {  
        String url = "https://fc-mp-317bc73c-3851-46e9-acb8-90f9d8227abf.next.bspapp.com/uni-id-co/externalRegister";  
        Map<String,Object> params = new HashMap<>();  
        params.put("externalUid","15456125");  
        params.put("nickname","kjkfe");  
        params.put("username","sef");  
        params.put("avatar","https://d187uamsy6q6zw.cloudfront.net/2020/03/27/312bbb3f-7231-4083-8ed4-d941e814e3cd.jpg");  
        params.put("gender", 0);  
        Map<String,String> info = new HashMap<>();  
        info.put("uniPlatform", "web");  
        info.put("appId", "__UNI__3FB2D38");  

        Map<String,Object> data = new HashMap<>();  
        data.put("params",params);  
        data.put("clientInfo",info);  
        Response response = HttpUtils.post(url, com.alibaba.fastjson.JSON.toJSONString(data));  
        logger.info("response: {}",response);  
    }
public static Response post(String url, String json) throws IOException {  
        RequestBody body = RequestBody.create(JSON, json);  
        Request request = new Request.Builder()  
                .url(url)  
//                .header("uni-id-nonce", param.get("nonce"))  
//                .addHeader("uni-id-timestamp", param.get("timestamp"))  
//                .addHeader("uni-id-signature", param.get("sign"))  
//                .addHeader("Content-Type", "application/json")  
//                .addHeader("Cache-Control", "no-cache")  
                .header("Unicloud-S2s-Authorization", "CONNECTCODE abcdefghijklmnyut")  
                .addHeader("Content-Type", "application/json")  
                .post(body)  
                .build();  
        Response response = client.newCall(request).execute();  
        if(response.isSuccessful()){//回调的方法执行在子线程。  
            logger.info("kwwl" + "response.code()=="+response.code());  
            logger.info("kwwl" + "response.body().string()=="+response.body().string());  
        }  
        return response;  
    }

下面是uni-config-center -> uni-id -> config.json的配置文件

{  
  "passwordSecret": "4355656",  
  "tokenSecret": "78978979",  
  "requestAuthSecret":"abcdefghijklmnyut",  
  "passwordStrength": "",  
  "tokenExpiresIn": 7200,  
  "tokenExpiresThreshold": 1600,  
  "passwordErrorLimit": 6,  
  "bindTokenToDevice": false,  
  "passwordErrorRetryTime": 3600,  
  "autoSetInviteCode": false,  
  "forceInviteCode": false,  
  "preferedAppPlatform": "app",  
  "app": {  
    "tokenExpiresIn": 2592000,  
    "oauth": {  
      "weixin": {  
        "appid": "填写来源微信开放平台https://open.weixin.qq.com/创建的应用的appid",  
        "appsecret": "填写来源微信开放平台https://open.weixin.qq.com/创建的应用的appsecret"  
      },  
      "apple": {  
        "bundleId": "苹果开发者后台获取的bundleId"  
      }  
    }  
  },  
  "web": {  
    "oauth": {  
      "h5-weixin": {  
        "appid": "微信浏览器内微信登录,所用的微信公众号appid",  
        "appsecret": "微信公众号后台获取的appsecret"  
      },  
      "web-weixin": {  
        "appid": "手机微信扫码登录,所用的微信开放平台(https://open.weixin.qq.com/)-网站应用的appid",  
        "appsecret": "微信开放平台-网站应用的appsecret"  
      }  
    }  
  },  
  "mp-weixin": {  
    "oauth": {  
      "weixin": {  
        "appid": "微信小程序登录所用的appid、appsecret需要在对应的小程序管理控制台获取",  
        "appsecret": "微信小程序后台获取的appsecret"  
      }  
    }  
  },  
  "mp-alipay": {  
    "oauth": {  
      "alipay": {  
        "appid": "支付宝小程序登录用到的appid、privateKey请参考支付宝小程序的文档进行设置或者获取,https://opendocs.alipay.com/open/291/105971#LDsXr",  
        "privateKey": "支付宝小程序登录用到的appid、privateKey请参考支付宝小程序的文档进行设置或者获取,https://opendocs.alipay.com/open/291/105971#LDsXr"  
      }  
    }  
  },  
  "service": {  
    "sms": {  
      "name": "应用名称,对应短信模版的name",  
      "codeExpiresIn": 300,  
      "smsKey": "短信密钥key,开通短信服务处可以看到",  
      "smsSecret": "短信密钥secret,开通短信服务处可以看到"  
    },  
    "univerify": {  
      "appid": "__UNI__3FB2D38",  
      "apiKey": "1b691258e99f46cf2af55754dc3fe649",  
      "apiSecret": "e7ddaa8b7fb7268ebe1edabbf5685d98"  
    }  
  }  
}

uni-config-center -> uni-cloud-s2s -> config.json的配置文件

{  
  "type": "connectCode",  
  "connectCode": "abcdefghijklmnyut"  
}
2023-04-08 12:25 负责人:无 分享
已邀请:
9***@qq.com

9***@qq.com

这个版本好像是有bug,报错提示“没有配置web.oauth.weixin-h5”, 实际上这个初始化的starter模版里根本就没有weixin-h5,只有一个h5-weixin,即使配置上也没用,我今天也是遇到你这个问题。

9***@qq.com

9***@qq.com

楼主,找到问题了,是因为云函数配置好之后没有上传!

  • 阿落 (作者)

    这个不应该, 我都重新上传过好多次. 还换项目, 新建项目都试过了, 都是一样的错误

    2023-04-12 09:11

阿落

阿落 (作者) - 不介绍了吧 不太光彩

放弃了, 折腾了好几天, 无论怎么弄都是报这个错, 上传了无数次, 删除项目, 再新建项目, 换项目, 请教联登成功的人. 所有能弄的都弄了. 你猜怎么着, 哎, 我就是报这个错, 不变. 拉J8倒

  • DCloud_uniCloud_CRL

    一般出现这个错误有以下两种情况:



    1. 签名字段不是params字段

    2. 签名密钥不正确或者配置文件没有上传

    2023-04-13 11:51

  • t***@961.com

    回复 DCloud_uniCloud_CRL: 签名字段不是params字段是什么意思

    2023-05-10 13:49

  • DCloud_uniCloud_CRL

    回复 t***@961.com: 计算签名要用 params参数来签名

    2023-05-10 19:46

DCloud_uniCloud_CRL

DCloud_uniCloud_CRL

使用 uni-cloud-s2s 需要 uni-id-pages 版本大于 1.1.10

  • 6***@qq.com

    帮忙看看这个问题:https://ask.dcloud.net.cn/question/172223?item_id=243055&rf=false

    2023-06-16 16:36

1***@qq.com

1***@qq.com

真你麻痹的麻烦,弄了一天,终于弄好了,弄完了还是蒙的。

2***@qq.com

2***@qq.com

大家有总结出是什么问题导致的吗?我的一个服务期,之前还是好好的,后来突然就提示这个请求不合法。同样的请求参数和url放到其他之前成功联登的服务器,又是可以正常联通的。还跟楼上其他朋友有个类似的情况,刚开始配置的时候提示请求不合法,但是第二天在请求竟奇迹般可以了。到了最近又突然不行了。真奇葩,我到uni-cloud官方QQ群问了也没谁给个回答,真郁闷。

要回复问题请先登录注册