Я просто следил за всем, что упоминается в этом примере от Аарона Брукнера. Пробовал с логическим флагом и без него для включения 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);
При попытке войти я получаю экран подтверждения от wechat. При нажатии «Подтвердить вход» меня перенаправляют в мое приложение, но ничего не происходит.
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 без :
, добавленная в Wechat-Dev-Console, а также имя пакета com.my.packaname.debug
, поскольку я использую свой debug.keystore для подписи своей отладочной версии. WXEntryActivity
находится внутри моего com.my.packagename.wxapi
и зарегистрирован в моем AndroidManifest.xml
с флагом exported
. Также я добавил правило в proguard-rules.pro
на всякий случай:
-keep class com.tencent.mm.sdk.** {
*;
}
Просто не могу понять, почему onCreate
и onResp
из WxEntryActivity
не вызываются для получения токена.