起伏的水
起伏的水
  • 发布:2016-09-03 16:27
  • 更新:2016-11-17 18:17
  • 阅读:2263

Android离线打包后微信登录获取不到微信的信息

分类:5+ SDK

在hbuilder上直接真机运行可以登录,离线打包后iOS微信登录正常,但安卓只有第一次获取到微信的信息后面就再也没有获取到了,每次点击微信弹出的“确认登录”后既没有进入getuserinfo的success方法也没有进入err方法。

2016-09-03 16:27 1 条评论 负责人:无 分享
已邀请:
起伏的水

起伏的水 (作者)

没人回答吗?有没有谁遇到过啊?

js代码如下:

function authLogin(id) {
plus.nativeUI.showWaiting('微信登录请求中。。。');
var s = auths[id];
if(s) {
s.login(function(e) {
alert("登录成功!");
s.getUserInfo(function(user) {
alert("获取信息。。。。。");
var params = {
oauthCode: s.userInfo.unionid,
type: 1,
nickName: s.userInfo.nickname,
avatar: s.userInfo.headimgurl,
role: 0,
};
console.log('weixin:' + JSON.stringify(params));
var url = callwerearchUrl + '/rest/api/oauth/login';
userLogin(url, params);
}, function() {
alert("获取信息失败");
});

}, function(e) {
alert("登录失败!");
});
}
}

每次只弹出“登录成功”的弹窗,并且只能拉起一次微信授权的界面,要再次拉起只能清除数据或卸载后重装才能拉起登录界面。求帮助啊,困扰了3天了。

Android_磊子

Android_磊子

我感觉是你的签名不对应所致,对照下面所列情况排解下问题。
微信支付、分享、登陆说明
1,查看appid是否配置(离线打包在AndroidManifest.xml配置,云打包在manifest.json配置)
2,申请appid时所用证书签名与apk的签名证书必须一致
3,申请appid时填写包名与打包时候所填写包名必须一致
4,查看提示错误代码、信息
5,使用IDE自带HBuilder调试HelloH5中支付模块是否能够成功
6,对比客户端js代码、服务器代码是否匹配
7,服务器下发的json需要对json里的key进行字母排序,排序后生成sign(参考https://github.com/dcloudio/H5P.Server/tree/master/payment)
8, 开发平台配置的包名与签名跟apk的签名文件是否一致
9,服务生成订单时设置的appid、appkey等参数是否正确

zhonghua

zhonghua

我也是离线打包,第一次可以,之后就不可以了。

经过调试,发现是authResult存储后,没有考虑到过期情况。而通过authResult获取用户信息时,又没有出来微信服务端调用失败的情况,出现NPE错误。

写一个继承与WeiXinOAuthService 的扩展类
package io.dcloud.feature.oauth.weixin;

import io.dcloud.common.DHInterface.IWebview;

import org.json.JSONArray;

public class WeiXinOAuthServiceExt extends WeiXinOAuthService {
private boolean returnEmpty = false;

@Override  
public void login(IWebview arg0, JSONArray arg1) {  
    returnEmpty = true;  
    super.login(arg0, arg1);  
}  

@Override  
protected String getValue(String name) {  
    if("authResult".equals(name) && returnEmpty) {  
        returnEmpty = false;  
        return "{}";  
    }  
    return super.getValue(name);  
}  

}

同时修改properties.xml中的参数为

        <module  
            name="OAuth-Weixin"  
            value="io.dcloud.feature.oauth.weixin.WeiXinOAuthServiceExt" />  

基本解决问题。

该问题目前已经被锁定, 无法添加新回复