微信登录-不接收令牌

Max*_*axi 5 android wechat

我只是关注了本示例中Aaron Bruckner 提到的所有内容。在启用和禁用boolean标志的情况下进行了尝试checkSignature

初始化API:

api = WXAPIFactory.createWXAPI(getContext(), WXEntryActivity.APP_ID,
            true);
Run Code Online (Sandbox Code Playgroud)

发送注册:

api.registerApp(WXEntryActivity.APP_ID);
Run Code Online (Sandbox Code Playgroud)

发送登录名:

SendAuth.Req req = new SendAuth.Req();
      req.scope = "snsapi_userinfo";
      req.state = "none";
      api.sendReq(req);
Run Code Online (Sandbox Code Playgroud)

尝试登录时,我从微信获取确认屏幕。当点击“确认登录”时,我被重定向到我的应用程序,但是什么也没有发生。

在此处输入图片说明

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) }
Run Code Online (Sandbox Code Playgroud)

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

D/MicroMsg.SDK.WXMsgImplComm: check signature:3XXXXXXXXX02eb30820254a00302010202XXXXXXXXXXXXXXXXXXXXXXXXX
D/MicroMsg.SDK.WXMsgImplComm: pass
Run Code Online (Sandbox Code Playgroud)

我有正确的Application-Signature MD5,没有:添加到Wechat-Dev-Console以及packageName,com.my.packaname.debug因为我正在使用debug.keystore签名我的调试版本。 WXEntryActivity在我的内部,com.my.packagename.wxapi并在我AndroidManifest.xmlexported标志中注册。我还添加了一条规则以proguard-rules.pro确保安全:

 -keep class com.tencent.mm.sdk.** {
      *;
  }
Run Code Online (Sandbox Code Playgroud)

只是想不通,为什么onCreateonRespWxEntryActivity是没有得到所谓的获得令牌。

Max*_*axi 2

找到解决方案:

问题是由包名引起的。

由于我使用两个构建变体releasedebug,我希望包名是com.my.packagename.debug我的debug-build(在中设置build.gradle)所以在微信的管理中心我使用了com.my.packagename.debug。问题是 是WxEntryActivity通过反射调用的,而 myWxEntryActivity位于 my 中com.my.packagename.wxapi

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

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