微信登录-收不到token
Wechat login - do not receive token
我刚刚关注了 Aaron Bruckner 在 example 中提到的所有内容。尝试使用和不使用布尔标志来启用 checkSignature
.
初始化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);
尝试登录时,我从微信收到确认屏幕。当点击 "Confirm Login" 我被重定向到我的应用程序但没有任何反应。
没有调用 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) }
签名为true
时的日志基本相同,除了:
D/MicroMsg.SDK.WXMsgImplComm: check signature:3XXXXXXXXX02eb30820254a00302010202XXXXXXXXXXXXXXXXXXXXXXXXX
D/MicroMsg.SDK.WXMsgImplComm: pass
我有正确的应用程序签名 MD5,没有 :
添加到微信开发控制台以及 packageName com.my.packaname.debug
因为我正在使用我的 debug.keystore 来签署我的调试版本。
WXEntryActivity
在我的 com.my.packagename.wxapi
中,并在我的 AndroidManifest.xml
中使用 exported
标志注册。
为了安全起见,我还向 proguard-rules.pro
添加了一条规则:
-keep class com.tencent.mm.sdk.** {
*;
}
只是想不通为什么没有调用 WxEntryActivity
的 onCreate
和 onResp
来获取令牌。
找到的解决方案:
问题是由包名引起的。
我正在使用两个构建变体 release & debug,
我希望我的调试版本的包名是 com.my.packagename.debug
(在 build.gradle
中设置)所以在微信管理中心我使用了 com.my.packagename.debug
。
问题是 WxEntryActivity
是通过反射调用的,而我的 WxEntryActivity
位于我的 com.my.packagename.wxapi
中。
因此无法找到 class,需要将其放入 "manual" 包 .debug.wxapi
。
因此在使用发布和调试时,您需要位于两个不同包中的两个活动。
我刚刚关注了 Aaron Bruckner 在 example 中提到的所有内容。尝试使用和不使用布尔标志来启用 checkSignature
.
初始化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);
尝试登录时,我从微信收到确认屏幕。当点击 "Confirm Login" 我被重定向到我的应用程序但没有任何反应。
没有调用 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) }
签名为true
时的日志基本相同,除了:
D/MicroMsg.SDK.WXMsgImplComm: check signature:3XXXXXXXXX02eb30820254a00302010202XXXXXXXXXXXXXXXXXXXXXXXXX
D/MicroMsg.SDK.WXMsgImplComm: pass
我有正确的应用程序签名 MD5,没有 :
添加到微信开发控制台以及 packageName com.my.packaname.debug
因为我正在使用我的 debug.keystore 来签署我的调试版本。
WXEntryActivity
在我的 com.my.packagename.wxapi
中,并在我的 AndroidManifest.xml
中使用 exported
标志注册。
为了安全起见,我还向 proguard-rules.pro
添加了一条规则:
-keep class com.tencent.mm.sdk.** {
*;
}
只是想不通为什么没有调用 WxEntryActivity
的 onCreate
和 onResp
来获取令牌。
找到的解决方案:
问题是由包名引起的。
我正在使用两个构建变体 release & debug,
我希望我的调试版本的包名是 com.my.packagename.debug
(在 build.gradle
中设置)所以在微信管理中心我使用了 com.my.packagename.debug
。
问题是 WxEntryActivity
是通过反射调用的,而我的 WxEntryActivity
位于我的 com.my.packagename.wxapi
中。
因此无法找到 class,需要将其放入 "manual" 包 .debug.wxapi
。
因此在使用发布和调试时,您需要位于两个不同包中的两个活动。