Dieser Artikel teilt Ihnen hauptsächlich die Analyse der Probleme beim Zugriff auf einmalige Abonnementnachrichten von WeChat mit. Die Autorisierung zum Senden von einmaligen Abonnementnachrichten wurde durchgeführt:
final IWXAPI api = WXAPIFactory.createWXAPI(SettingActivity.this, response.getAppId()); // 将该app注册到微信 api.registerApp(ServerUrls.WEIXIN_APP_ID); Log.i("20180228", "come to send request with subscribeMessage...."); SubscribeMessage.Req req = new SubscribeMessage.Req(); req.templateID = response.getTemplateId(); req.scene = 889; // req.reserved = response.getReserved(); Log.i("20180228", "req.appId: "+response.getAppId()); Log.i("20180228", "req.templateId: "+req.templateID); // Log.i("20180228", "req.scene: "+req.scene); // Log.i("20180228", "req.reserved: "+req.reserved); Log.i("20180228", "before send request: "+req.toString()); boolean sendResult = api.sendReq(req); Log.i("20180228", "after send request: "+sendResult); ToastUtils.show(SettingActivity.this, "发送请求结束");
Führen Sie eine einfache Verarbeitung durch Rückruf auf der Autorisierungsseite:
@Override public void onResp(BaseResp resp) { Log.i("20180228", "here come to the resp with wechat request: "+resp.toString()); Log.i("20180228", "here come to the resp with wechat errCode: "+resp.errCode); Log.i("20180228", "here come to the resp with wechat errStr: "+resp.errStr); Log.i("20180228", "here come to the resp with wechat openId: "+resp.openId); Log.i("20180228", "here come to the resp with wechat type: "+resp.getType()); ToastUtils.show(this, "openId: "+resp.openId); if(resp.getType() == ConstantsAPI.COMMAND_SUBSCRIBE_MESSAGE){ Log.i("20180305", "here come to resp method successful...."); } // if (resp.getType() == ConstantsAPI.COMMAND_SENDAUTH && resp.errCode == BaseResp.ErrCode.ERR_OK){ // ToastUtils.show(this, "request auth here ...."); // String openId = resp.openId; // int errCode = resp.errCode; // String errString = resp.errStr; // // new UserManager(this).bidnWXRSS(openId, new SimpleCallback<ApiResponse>() { // @Override // public void onSuccess(ApiResponse response) { // ToastUtils.show(WXEntryActivity.this, "绑定成功!"); // finish(); // } // }); // } finish(); }
wird im geöffneten Debug-Druck angezeigt:
03-05 17:46:00.967 10706-10706/com.xxx I/MicroMsg.SDK.WXApiImplV10: handleIntent, cmd = 4 03-05 17:46:00.967 10706-10706/com.xxx I/MicroMsg.SDK.WXMediaMessage: pathOldToNew, oldPath = com.tencent.mm.sdk.openapi.WXAppExtendObject 03-05 17:46:00.967 10706-10706/com.xxx I/MicroMsg.SDK.WXApiImplV10: handleWxInternalRespType, extInfo = wx_internal_resptype=subscribemessage&openid=oerX_woJRjvv8NzuUJHcKJe5PzwU&template_id=H0tXdBxs_ea5bVofycFBUPZl3hRgLWHxJIVBEYhSnxQ&action=confirm&reserved=null&scene=889 03-05 17:46:00.967 10706-10706/com.xxx I/MicroMsg.SDK.WXApiImplV10: handleWxInternalRespType, respType = null 03-05 17:46:00.967 10706-10706/com.xxx E/MicroMsg.SDK.WXApiImplV10: handleWxInternalRespType fail, respType is null
Wenn handleIntent() false zurückgibt, kann die onResp-Methode nicht aufgerufen werden weil Der obige respType = null, aber es wurde festgestellt, dass extInfo Daten enthält, und es ist ersichtlich, dass wx_internal_resptype=subscribemessage.
WXApiImplV10.class hier ansehen, ein Teil des Codes lautet wie folgt:
Mit anderen Worten, respType=subscribemessage hier, aber es ist so Der oben analysierte Schlüsselcode lautete:
Dann wurde mir klar, dass hier am Anfang der extInfo-Zeichenfolge ein „?“ fehlt Nach dem Parsen von extInfo in Uri kann das angegebene Attribut „wx_internal_resptype“ nicht gefunden werden. Daher bleibt die Seite auf der WXEntryActivity-Seite hängen, ohne mit dem nächsten Schritt fortzufahren. Ich hoffe, dass das WeChat-Entwicklungsteam so schnell wie möglich damit umgehen kann!
Das obige ist der detaillierte Inhalt vonAnalyse des Problems beim Zugriff auf einmalige WeChat-Abonnementnachrichten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!