xu-li / cordova-plugin-wechat

A cordova plugin, a JS version of Wechat SDK
1.22k stars 509 forks source link

微信登陆问题:Plugin should use CordovaInterface.getThreadPool() #523

Open rehiy opened 5 years ago

rehiy commented 5 years ago

首先iOS版本没问题,Android版本分享没问题,因此可以排除插件配置问题。

根据日志可知,已经获取到了code,但是没有成功执行回调函数。

微信登陆可以唤起授权界面,点击确定后,js中无法接受到 code,日志如下


2019-04-17 16:48:57.073 28217-28918/myapp D/Cordova.Plugin.Wechat: sendAuthRequest is called. Callback ID: Wechat1957840823.
2019-04-17 16:48:57.074 28217-28918/myapp D/MicroMsg.SDK.WXMsgImplComm: check signature: ...
2019-04-17 16:48:57.074 28217-28918/myapp D/MicroMsg.SDK.WXMsgImplComm: pass
2019-04-17 16:48:57.074 28217-28918/myapp I/MicroMsg.SDK.WXApiImplV10: sendReq, req type = 1
2019-04-17 16:48:57.083 28217-28918/myapp I/MicroMsg.SDK.WXApiImplV10: getTokenFromWX token is OpenSdkToken@1555490937081
2019-04-17 16:48:57.084 28217-28918/myapp D/MicroMsg.SDK.MMessageAct: send, targetPkgName = com.tencent.mm, targetClassName = com.tencent.mm.plugin.base.stub.WXEntryActivity
2019-04-17 16:48:57.108 28217-28217/myapp V/MicroMsg.SDK.WXApiImplV10.ActivityLifecycleCb: myapp.MainActivity  onActivityPaused
2019-04-17 16:48:57.110 28217-28918/myapp D/MicroMsg.SDK.MMessageAct: send mm message, intent=Intent { flg=0x18000000 cmp=com.tencent.mm/.plugin.base.stub.WXEntryActivity (has extras) }
2019-04-17 16:48:57.110 28217-28918/myapp I/Cordova.Plugin.Wechat: Auth request has been sent successfully.
2019-04-17 16:48:57.110 28217-28918/myapp W/PluginManager: THREAD WARNING: exec() call to Wechat.sendAuthRequest blocked the main thread for 37ms. Plugin should use CordovaInterface.getThreadPool().
jasonz1987 commented 5 years ago

CordovaInterface.getThreadPool 只是一个关于线程的警告。

关于你的微信登录无法回调,登录完成之后是否跳回app了呢,有没有出现闪退,没有闪退的话 请检查项目安卓目录内的WXEntryActivity 文件是否存在,对应的package name是否修改。

rehiy commented 5 years ago

跳回app了,但是回调函数没有执行

rehiy commented 5 years ago

直接在console运行文档中的测试用例也收不到

jasonz1987 commented 5 years ago

你是说我们的demo吗? demo的话需要修改为你自己的包名和签名。

rehiy commented 5 years ago

包签名都是对的,只是拿出来demo的代码去执行。可以唤起授权,回到app,但是回调函数不执行

rehiy commented 5 years ago

我可以打个debig包打给你看下么?

jasonz1987 commented 5 years ago

可以

rehiy commented 5 years ago

问题已解决,是因为我们内部一个插件中的一段代码造成的,此段代码用于兼容http协议的,去掉后会导致android8以上只能使用 https 接口

<edit-config file="AndroidManifest.xml" mode="merge" target="/manifest/application">
    <application android:usesCleartextTraffic="true" />
</edit-config>
zjxsdog commented 5 years ago

请问最后是怎么解决的 我也引用了这段只能使用https的代码 目前的状态是能回到app但是触发不了回调函数