iOS微信机器人研究
2018-02-07 本文已影响435人
Jackson_Z
webwxinit 报错
"BaseResponse": {
"Ret": 1,//或1100
"ErrMsg": ""
}
当前微信网页版客户端分两个版本,本站楼主所说的是wx2.qq.com第二版,很多用户登录网页版客户端后会自动跳转到第一版wx.qq.com地址,这个版本跟具体用户绑定的,你们试一下使用网页版微信登录,看看你们出现的地址是第一版还是第二版;第一版微信和第二版请求数据是不一样的。拿登陆后重定向地址来说:第一版地址【https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage?ticket=WXTICKET&uuid=WXUUID&lang=zh_CN&scan=时间字符串前10位数字&fun=new&version=v2】,第二版地址【https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage?ticket=WXTICKET&uuid=WXUUID&lang=zh_CN&scan=时间字符串前10位数字】,大写字母为需要给出参数的变量。
Ret 返回1101,在别处登录了;数据返回空,传参方式错误,是request payload 方式传参,解决如下
/**
微信初始化
*/
-(void)webwxinitSuccess:(void(^)(BOOL ret))callback {
NSString *deviceID = [self getDeviceID];
NSDictionary *dict = @{ @"Uin": _wxuin,
@"Sid": _wxsid,
@"Skey": _skey,
@"DeviceID":deviceID};
NSDictionary *para = @{@"BaseRequest":dict};
NSString *r = [self currentTimeStr];
NSString *url = [NSString stringWithFormat:@"https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxinit?r=%@&pass_ticket=%@",r,_pass_ticket];
HPNetWorkTool *manager = [HPNetWorkTool sharedNetworkTool];
NSMutableURLRequest *request = [manager.requestSerializer requestWithMethod:@"POST" URLString:url parameters:nil error:nil];
NSData *data = [NSJSONSerialization dataWithJSONObject:para options:NSJSONWritingPrettyPrinted error:nil];
[request setHTTPBody:data];
__block NSURLSessionDataTask *task = [manager
dataTaskWithRequest:request
completionHandler:^(NSURLResponse * __unused
response, id responseObject, NSError *error) {
if (error) {
FBLog(@"%@",error);
} else {
NSString *str = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
FBLog(@"str:%@",str);
}
}];
[task resume];
}