发一个关于“微笑天使包燕娜"事件的Code Review,希望对大家有用。
以下是对“微笑天使包燕娜"事件的Code Review:
1. 问题现象
新用户在iPhone客户端在用新浪微博登录时,用户的名称自动变为“微笑天使包燕娜”。
2. 现象分析
先说明咱们的新用户登录流程,
A. 新用户登录时首先向第三方平台,请求用户的用户id(uid)
B. 客户端将此uid发送到咱们自己的服务器,服务器返回此用户的uid与数据库对比返回,此用户是一个新用户
C. 客户端收到服务器发送的此用户为新用户的信息,再次利用用户的uid向第三方平台发送请求用户具体信息的消息。
D. 第三方服务器返回用户的具体信息后,客户端再将此信息发送到咱们自己的服务器上保存。
E. 服务器返回修改过新的用户数据,客户端保存,登录过程完毕。
通过对登录过程的log信息进行分析发现,在A和B阶段得到的uid,与C阶段发送的uid不相同。
改变后的uid一直为2147483647。此uid对应新浪微博的用户"微笑天使包燕娜",因此返回给咱们自己服务器的用户数据一直是这个名称。
继续定位发现在新浪SDK中,向新浪服务器发送获得用户详细信息(C过程)请求之前,代码进行了一次将uid字符串转换为int,再转换为字符串的过程。而当用户uid非常大,大于int的最大值(2147483647)时,此时uid被转换为int的最大值2147483647。
因此,发送到新浪的uid会一直是“2147483647”。
3. 解决问题
在新浪的SDK的WeiboClient类中,将转换int的代码去掉并修改接口直接将字符串传入发送请求的函数中,问题解决。
修改后的代码如下:
- (void)getUser:(NSString *)userId
{
needAuth = YES;
NSString *path = [NSString stringWithFormat:@"users/show.%@", API_FORMAT];
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithCapacity:0];
[params setObject: userId forKey:@"user_id"];
[super get:[self getURL:path queryParameters:params]];
}
1. 问题现象
新用户在iPhone客户端在用新浪微博登录时,用户的名称自动变为“微笑天使包燕娜”。
2. 现象分析
先说明咱们的新用户登录流程,
A. 新用户登录时首先向第三方平台,请求用户的用户id(uid)
B. 客户端将此uid发送到咱们自己的服务器,服务器返回此用户的uid与数据库对比返回,此用户是一个新用户
C. 客户端收到服务器发送的此用户为新用户的信息,再次利用用户的uid向第三方平台发送请求用户具体信息的消息。
D. 第三方服务器返回用户的具体信息后,客户端再将此信息发送到咱们自己的服务器上保存。
E. 服务器返回修改过新的用户数据,客户端保存,登录过程完毕。
通过对登录过程的log信息进行分析发现,在A和B阶段得到的uid,与C阶段发送的uid不相同。
改变后的uid一直为2147483647。此uid对应新浪微博的用户"微笑天使包燕娜",因此返回给咱们自己服务器的用户数据一直是这个名称。
继续定位发现在新浪SDK中,向新浪服务器发送获得用户详细信息(C过程)请求之前,代码进行了一次将uid字符串转换为int,再转换为字符串的过程。而当用户uid非常大,大于int的最大值(2147483647)时,此时uid被转换为int的最大值2147483647。
因此,发送到新浪的uid会一直是“2147483647”。
3. 解决问题
在新浪的SDK的WeiboClient类中,将转换int的代码去掉并修改接口直接将字符串传入发送请求的函数中,问题解决。
修改后的代码如下:
- (void)getUser:(NSString *)userId
{
needAuth = YES;
NSString *path = [NSString stringWithFormat:@"users/show.%@", API_FORMAT];
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithCapacity:0];
[params setObject: userId forKey:@"user_id"];
[super get:[self getURL:path queryParameters:params]];
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!