Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 微信登录-不接收令牌_Android_Wechat - Fatal编程技术网

Android 微信登录-不接收令牌

Android 微信登录-不接收令牌,android,wechat,Android,Wechat,我只是关注了Aaron Bruckner在本文中提到的所有内容。在启用检查签名的布尔标志的情况下和不使用布尔标志的情况下尝试 初始化API: api = WXAPIFactory.createWXAPI(getContext(), WXEntryActivity.APP_ID, true); 发送寄存器: api.registerApp(WXEntryActivity.APP_ID); 发送登录名: SendAuth.Req req = new SendAuth.Re

我只是关注了Aaron Bruckner在本文中提到的所有内容。在启用
检查签名
的布尔标志的情况下和不使用布尔标志的情况下尝试

初始化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);
当尝试登录时,我从微信获得确认屏幕。当点击“确认登录”时,我被重定向到我的应用程序,但什么也没发生

未调用
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) }
我已将正确的应用程序签名MD5添加到微信开发控制台以及packageName
com.my.packaname.debug
,而没有添加
,因为我正在使用我的debug.keystore对我的调试版本进行签名。
WXEntryActivity
位于my
com.my.packagename.wxapi
中,并使用
导出的
标志在my
AndroidManifest.xml
中注册。 为了安全起见,我还在
proguard rules.pro
中添加了一条规则:

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

无法理解为什么
WxEntryActivity
onCreate
onResp
没有被调用以获取令牌。

找到的解决方案:

问题是由包名引起的

由于am使用了两个构建变体发布版和调试版, 对于我的调试版本(在
build.gradle
中设置),我希望packagename是
com.my.packagename.debug
),因此在微信的管理中心我使用了
com.my.packagename.debug
。 问题是
WxEntryActivity
是通过反射调用的,而my
WxEntryActivity
位于my
com.my.packagename.wxapi

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


因此,在使用release和debug时,您需要位于两个不同包中的两个活动。

它是
WXEntryActivity
而不是
WXEntryActivity
请参见sepc:
 -keep class com.tencent.mm.sdk.** {
      *;
  }