android – 微信登录 – 不接收令牌

我刚刚跟踪了Aaron Bruckner在
example中提到的所有内容.尝试使用和不使用布尔标志来启用checkSignature.

init API:

api = WXAPIFactory.createWXAPI(getContext(), WXEntryActivity.APP_ID,
            true);

发送注册:

api.registerApp(WXEntryActivity.APP_ID);

发送登录:

SendAuth.Req req = new SendAuth.Req();
      req.scope = "snsapi_userinfo";
      req.state = "none";
      api.sendReq(req);

在尝试登录时,我从微信获得确认屏幕.当点击“确认登录”时,我被重定向到我的应用程序,但没有任何反应.

《android – 微信登录 – 不接收令牌》

WXEntryActivity.class未被调用 – 所以我没有收到任何令牌来继续我的身份验证.

签名设置为false时的日志:

D/MicroMsg.PaySdk.WXFactory: createWXAPI, appId = wx41XXXXXXXXX41, checkSignature = false
D/MicroMsg.SDK.WXApiImplV10: <init>, appId = wx41XXXXXXXXX41, checkSignature = false
D/MicroMsg.SDK.WXMsgImplComm: ignore wechat app signature validation
D/MicroMsg.SDK.WXApiImplV10: registerApp, appId = wx41XXXXXXXXX41
D/MicroMsg.SDK.WXApiImplV10: registerApp, appId = wx41XXXXXXXXX41
D/MicroMsg.SDK.WXApiImplV10: register app com.my.packagename.debug
D/MicroMsg.SDK.MMessage: send mm message, intent=Intent { act=com.tencent.mm.plugin.openapi.Intent.ACTION_HANDLE_APP_REGISTER (has extras) }, perm=co
D/MicroMsg.SDK.WXMsgImplComm: ignore wechat app signature validation
I/MicroMsg.SDK.WXApiImplV10: sendReq, req type = 1
D/MicroMsg.SDK.MMessageAct: send, targetPkgName = com.tencent.mm, targetClassName = com.tencent.mm.plugin.base.stub.WXEntryActivity
D/MicroMsg.SDK.MMessageAct: send mm message, intent=Intent { flg=0x18000000 cmp=com.tencent.mm/.plugin.base.stub.WXEntryActivity (has extras) }

签名为真时的日志基本相同,除了:

D/MicroMsg.SDK.WXMsgImplComm: check signature:3XXXXXXXXX02eb30820254a00302010202XXXXXXXXXXXXXXXXXXXXXXXXX
D/MicroMsg.SDK.WXMsgImplComm: pass

我没有正确的Application-Signature MD5:添加到Wechat-Dev-Console以及packageName com.my.packaname.debug,因为我正在使用我的debug.keystore来签署我的调试版本.
WXEntryActivity位于我的com.my.packagename.wxapi中,并在我的AndroidManifest.xml中注册了导出的标志.
另外,我为proguard-rules.pro添加了一条规则是安全的:

 -keep class com.tencent.mm.sdk.** {
      *;
  }

只是无法弄清楚为什么没有调用WxEntryActivity的onCreate和onResp来获取令牌.

最佳答案 解决方案:

问题是由包名引起的.

正如我正在使用两个构建版本发布&调试
我希望packagename为com.my.packagename.debug用于我的debug-build(在build.gradle中设置)所以在Wechat的Admin-Center中我使用了com.my.packagename.debug.
问题是WxEntryActivity是通过反射调用的,而我的WxEntryActivity位于我的com.my.packagename.wxapi中.

因此无法找到该类,需要将其放入“手动”包.debug.wxapi中.

因此,在使用发布和调试时,您需要两个位于两个不同包中的活动.

点赞