html52.com
我爱小程序-开发者交流社区

Android 微信登录调起完成后请求token接口请求发出后无响应

框架类型 问题类型 操作系统 操作系统版本 手机型号 微信版本
小程序 Bug Android 8.0.0 HUAWEI NXT-TL00 不清楚

不是小程序就普通的客户端三方登录,极少数用户出现登录失败的情况

/**
 * 获取微信的 access_token
 *
 * @param appId 应用唯一标识,在微信开放平台提交应用审核通过后获得
 * @param code  像微信请求登录权限后获得的 code
 * @return 返回的响应 WXLoginResponse
 */
@GET("https://api.weixin.qq.com/sns/oauth2/access_token" +
        "?grant_type=authorization_code")
Flowable<WXLoginResponse> getWechatToken(@Query("secret") String wx_secret, @Query("appid") String appId,
                                         @Query("code") String code);
//微信登录
@Override
public void getWxInfo(String code) {
    mRxHelper.getFlowable(mNetApi.getWechatToken(LoginUtils.WX_SECRET, LoginUtils.WX_APP_ID, code), mLifecycleProvider)
            .subscribe(new ResponseSubscriber<WXLoginResponse>() {
                @Override
                public void onSuccess(WXLoginResponse response) {
                    // 保存微信登录过期时间:
                    // expiresTime:Token 有效截止时间
                    // 取出 expiresTime 之后减去 System.currentTimeMillis() 然后除以1000,小于0说明已经过期
                    // * 现在没有用到微信或 QQ 的分享功能,暂不需要使用token,暂不保存
                    // * LoginUtils.get().setExpireTime(LoginUtils.TYPE_WX, response.getExpires_in());

                    LoginUtils.get().setLoginType(LoginUtils.TYPE_WX); // 设置登录类型为微信
                    // 通过微信返回的 id 和 token 获得后台服务器账号的 openId 和 accessToken
                    account = response.getOpenid();
                    String id = response.getOpenid();
                    String token = response.getAccess_token();
                    mSpHelper.putString(SpHelper.OPEN_ID, id);
                    mSpHelper.putString(SpHelper.ACCESS_TOKEN, token);
                    Swatch5LogUtil.getInstance().writeLog("微信登录授权请求成功id:"+id+",token:"+token+",account:"+account, Swatch5LogUtil.LOGTYPE.LOG_THIRD_LOGIN);
                    getUserInfo(id, token, LoginUtils.TYPE_WX);
                }

                @Override
                public void onFailure(WXLoginResponse response) {
                    super.onFailure(response);
                    Swatch5LogUtil.getInstance().writeLog("微信登录授权请求失败:"+response.getCode()+","+response.getMsg()+","+response.toString(), Swatch5LogUtil.LOGTYPE.LOG_THIRD_LOGIN);

                }

                @Override
                public void onError(Throwable e) {
                    super.onError(e);
                    Swatch5LogUtil.getInstance().writeLog("微信登录授权请求异常:"+e.getMessage(), Swatch5LogUtil.LOGTYPE.LOG_THIRD_LOGIN);

                }
            });
}

这是用户当时手机的网络请求日志

这是用户当时手机的网络请求日志

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

真正的个人免签约支付接口

云免签H5支付