yorkie / react-native-wechat

🚀 WeChat login, share, favorite and payment for React-Native on iOS and Android platforms (QQ: 336021910)
https://npmjs.org/package/react-native-wechat
MIT License
2.91k stars 710 forks source link

Android真机调试调用三方登录功能,跳转到授权界面,但是点击确认返回无响应,获取不到相关信息 #349

Open weizhiyang opened 6 years ago

qiandingqin commented 6 years ago

我也是 调出微信授权界面后 点击授权后没有进入回调

zc-Mukden commented 6 years ago

export function sendAuthRequest(scopes, state) { return new Promise((resolve, reject) => { WeChat.sendAuthRequest(scopes, state, () => {}); emitter.once('SendAuth.Resp', resp => { //以下代码不走了,不知道为什么 if (resp.errCode === 0) { resolve(resp); } else { reject(new WechatError(resp)); } }); }); }

yvvw commented 6 years ago

 安卓接收微信的响应通过 WXEntryActivity 接收的 1 确保微信平台登记的包名对应项目下是否包含 <applicationId | 包名>.wxapi 这个包,注意包名一定要和登记的一致 2 AndroidManifest.xml 文件中是否添加了这个 activity

<activity
            android:name=".wxapi.WXEntryActivity"
            android:exported="true"
            android:label="@string/app_name" />

3 WXEntryActivity 类中 onCreate 方法下一定要调用 WeChatModule.handleIntent(getIntent());

检查问题,在 onCreate 方法中打断点,如果吊起微信后点击授权如果停在 onCreate 方法中代表微信已经有应答了,就没有问题,如果没有执行这个方法代表项目配置有问题

zc-Mukden commented 6 years ago

我目前的情况是这样的,APP首次启动,点击微信登录没有任何问题。一旦进入我的游戏主页面之后,再回来点击微信登录就没有任何返回值。是什么监听被覆盖了吗??还是冲突了,找不到原因啊!!!

yvvw commented 6 years ago

@zc-Mukden 如果调用后不跳转到微信你可以在这里这里(把 api.sendReq(req) 结果log出来)打断点

如果第一个位置执行不到说明这个库的js部分有问题,没有调用到原生方法。 如果第二个部分返回结果为false,则说明请求发送过程失败了。

如果跳转到微信,点击没返回结果,用上面的方式再检查一次

因为看不到项目,只能在方法的输入和输出位置检查,如果这些位置都有正确应答,说明是业务逻辑的问题

Alvin365 commented 6 years ago

@yyyyu 我onCreate走了断点,但是 WeChat.sendAuthRequest("snsapi_userinfo","wechat_sdk").then(responseCode => { alert(11); }) 还是没回调啊

Alvin365 commented 6 years ago

@yyyyu 这里不走了啊 image

alert不会弹

yvvw commented 6 years ago

@Alvin365 你在这里打断点,如果 onCreate 方法里面调用过 WeChatModule.handleIntent(getIntent()); 会执行到这里,代表微信返回了响应结果,如果 onCreate 执行到了,这里理论上一定能执行到。

这里将响应结果传递到 js 端,如果这之后 js emitter 回调函数没有执行,说明 js 事件监听处有些问题

Alvin365 commented 6 years ago

@yyyyu 进断点了,有error错误,什么原因,我这边断点是先走这里,再走onCreate image

yvvw commented 6 years ago

@Alvin365 注意隐藏图片中的 openId 1 这个是微信sdk,从命名来看你的错误代码是禁止授权,你的微信平台申请的应用是否具有权限授权那,或者是否签名正确,debug 版本也需要包名、签名一致才能调试

Alvin365 commented 6 years ago

@yyyyu 断点只能debug啊,release是可以跳转授权的,但是上面js的alert也没法谈出,我在android原生这边也加个alert吧,感谢大神耐心解答

yvvw commented 6 years ago

@Alvin365 debug 版本也可以使用 release 签名的,在 build.gradle debug 版本加上签名配置就可以

buildTypes {
    debug {
        debuggable true
        // sign for wechat test
        signingConfig signingConfigs.release
    }
    release {
        // ...
        signingConfig signingConfigs.release
    }
}
Alvin365 commented 6 years ago

@yyyyu image 大神,errorCode= 0,这里的断点,JS那边还是没拿到回调

yvvw commented 6 years ago

@Alvin365 如果在这之后应用没有闪退,看下如果这里这里,第一个地方发送后会在第二个地方收到消息,如果第二个地方收到了,但是你业务逻辑部分没有收到,就是这个库的事件处理有问题,你要仔细研究下了,一步一步调试,看问题在哪里。如果第二个部分收不到,你看下 Android Studio debug 的 log 或者 logcat(应用左下角的按钮)看看有没有报错,根据报错再查下资料,我之前有遇到过当监听原生事件过多时候会出错(可能 js 桥有限制,不肯定)

zc-Mukden commented 6 years ago

应该是监听过多的问题吧,因为我不进那个监听很多的游戏页面的话,一切正常。。能回调。进了游戏页面,100%不回调。把游戏页面代码全注释调,只返回一个空的View,微信也正常回调。但是,我只是注释添加的监听事件的话,还是不能正常回调。这让我很没有头绪。。。。。

yvvw commented 6 years ago

如果有兴趣的话可以试试我写的 https://github.com/yyyyu/react-native-wechat

StiffFy commented 5 years ago

楼主解决了吗,我也遇到同样的问题

skjgithub950423 commented 5 years ago

参考这篇文章https://www.cnblogs.com/zhangdw/p/6194345.html

解决步骤: 检查MainApplication中是否有如下代码 `import com.theweflex.react.WeChatPackage; // Add this line before public class MainActivity ...

/**

创建Package

名称为你应用的包名+ wxapi,在新建的包中创建一个名字为WXEntryActivity的类。如包名为com.platformproject,目录结构和代码如下 image

在AndroidManifest.xml中加入微信Activity,如下 image