Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

小程序getUserInfo Gson失败(用户名包含表情) #876

Closed
martinbob1992 opened this issue Dec 13, 2018 · 14 comments
Closed

小程序getUserInfo Gson失败(用户名包含表情) #876

martinbob1992 opened this issue Dec 13, 2018 · 14 comments

Comments

@martinbob1992
Copy link

  1. 当小程序用户的昵称中间有表情符号时,getUserInfo方法gson序列化失败
    rawData={"nickName":"lisa??????哈哈","gender":0, ......省略无关紧要的其他信息

com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $

  1. 当小程序第一次获取用户信息的时候getUserInfo也会导致gson失败
    重现步骤:当用户第一次关注这个小程序,并同意授权的时候IllegalStateException,不动任何代码,再点一次授权就成功了,(已经确认不是 小程序请求有时会出现 Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $ #359 问题,不改动任何东西后续的授权是成功的)
@nanusl
Copy link

nanusl commented Dec 14, 2018

我也遇到了同样的问题..
Caused by: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $ at com.google.gson.stream.JsonReader.beginObject(JsonReader.java:385) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:215) ... 96 common frames omitted

@gaigeshen
Copy link

看报错的大意,是期待一个对象但实际是字符串,所以无法转换成对象。
先确认是否是特殊字符造成的。

我这边试了下,特殊字符是可以的,比如说:

String txt = "{\"nickName\": \"؞\uE110杰克\"}";
WxMaUserInfo info = WxMaUserInfo.fromJson(txt);
System.out.println(info);

将会正确打印:
WxMaUserInfo(openId=null, nickName=؞杰克, gender=null, language=null, city=null, province=null, country=null, avatarUrl=null, unionId=null, watermark=null)

将你报错的时候的所有参数内容发出来看下,原始字符串内容是什么样的,报错的位置是哪里

@martinbob1992
Copy link
Author

@gaigeshen
image
image

@gaigeshen
Copy link

把你的 encryptedData 和 iv 和 sessionKey 发出来 我测试下

@martinbob1992
Copy link
Author

encryptedData: BY6VOgcWbwGcyrunK0ECWI8rnDsT69DucZ+M78tc1aL9aM/3bEAHFYd4fu7kRjWhD4YfjObw44T9vUqKyHIjbKs6hvtEasZZEIW35x4a91xVgN48ZqZ7MTQqUlP13kDUlkuwYh+/8g8yceu4kNbjowYrhihx+SV7CfjKCveJ7TSepr5Z7aLv1o+rfeelfOwn++WN/YoQsuZ6S3L4fWlWe5DAAUnFUI6cJvxxCohVzbrVXhyH2AqQdSjH2WnMYFeaGFIbcoxMznlk7oEwFn+hBj63dyT/swdYQfEdzuyCBmKXy8d6l1RKVX6Y65coTD8kIlbr+FKsqYrXVUIUBSwehqYuOdhYWZ9Bntl5DWU1oqzAPCnMn2cAIoQpQPKP7IGSxMOvCNAMhVXbE7BvnWuVuGF+AM5tXAa9IVUhcMImGwLQqm4iV5uBd+5OcFObh3A4VJk9iBCBWSkBHa/rV9CVoY0bFv2F9/2Hv82++Ybl274=
iv: TarMFjnzHVxy8pdS93wQbw==
sessionKey: 7MG7jbTToVVRWRXVA885rg==

在设置微信用户名称的时候只要使用表情符号,就一定解析失败

@gaigeshen
Copy link

看样子是解密的问题, @binarywang

@bjchen2
Copy link

bjchen2 commented Dec 25, 2018

nested exception is com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $] with root cause
java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
at com.google.gson.stream.JsonReader.beginObject(JsonReader.java:385)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:215)
at com.google.gson.Gson.fromJson(Gson.java:927)
at com.google.gson.Gson.fromJson(Gson.java:892)
at com.google.gson.Gson.fromJson(Gson.java:841)
at com.google.gson.Gson.fromJson(Gson.java:813)
at cn.binarywang.wx.miniapp.bean.WxMaUserInfo.fromJson(WxMaUserInfo.java:27)
at cn.binarywang.wx.miniapp.api.impl.WxMaUserServiceImpl.getUserInfo(WxMaUserServiceImpl.java:41)

好像的确是WxMaCryptUtils.decrypt出了问题

@binarywang binarywang pinned this issue Dec 26, 2018
@kictto
Copy link

kictto commented Dec 27, 2018

同样遇到了这个问题

@binarywang binarywang unpinned this issue Dec 28, 2018
@cgz1211
Copy link

cgz1211 commented Dec 28, 2018

不包含表情也时不时会出现这个问题。

@binarywang
Copy link
Member

不是表情问题的,请参考#359,不要在这里回复无关问题了,谢谢各位合作

@binarywang
Copy link
Member

这种包含emoji特殊字符导致解密出问题的情况,目前暂时无解,参考过网上其他代码,一样解析有问题。有空再研究下。

@liyangzhou
Copy link

这种包含emoji特殊字符导致解密出问题的情况,目前暂时无解,参考过网上其他代码,一样解析有问题。有空再研究下。

这个问题目前有解决方案没?

@binarywang
Copy link
Member

这种包含emoji特殊字符导致解密出问题的情况,目前暂时无解,参考过网上其他代码,一样解析有问题。有空再研究下。

这个问题目前有解决方案没?

没,欢迎研究一下

@binarywang
Copy link
Member

很久没人反映这个问题,估计是官方修复了,因此暂时关闭

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

8 participants