iOS微信第三方登錄問題

這是本人寫的第一篇文章,寫的不好還望見諒!~

在做項目的時候,由于本人最先使用原生的微信集成第三方登錄,測試是沒有問題,后來由另外一個哥們集成了微信分享功能,他是使用的友盟集成的,最后導(dǎo)致測試的時候微信第三方登錄很難完成(親測好幾次才有一次能夠登錄);

在delegate方法接收到微信登錄回調(diào),發(fā)現(xiàn)token,openID,refreshToken很多時候獲取不到

if ([resp isKindOfClass:[SendAuthResp class]]) {? //授權(quán)登錄的類。

if (resp.errCode == 0) {? //成功。

SendAuthResp *resp2 = (SendAuthResp *)resp;

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

manager.requestSerializer = [AFJSONRequestSerializer serializer];//請求

manager.responseSerializer = [AFHTTPResponseSerializer serializer];//響應(yīng)

manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/html",@"application/json", @"text/json",@"text/plain", nil, nil];

//通過 appid? secret 認(rèn)證code . 來發(fā)送獲取 access_token的請求(這里設(shè)置微信的appKey和appSecret)

[manager GET:[NSString stringWithFormat:@"https://api.weixin.qq.com/sns/oauth2/access_token?appid=%@&secret=%@&code=%@&grant_type=authorization_code",URL_APPID,URL_SECRET,resp2.code] parameters:nil progress:^(NSProgress * _Nonnull downloadProgress) {

} success:^(NSURLSessionDataTask * _Nonnull task, id? responseObject) {

//獲得access_token,然后根據(jù)access_token獲取用戶信息請求。

NSDictionary *accessDict = (NSDictionary *)[NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];

NSString *token = [accessDict objectForKey:WX_ACCESS_TOKEN];

NSString *openID = [accessDict objectForKey:WX_OPEN_ID];

NSString *refreshToken = [accessDict objectForKey:WX_REFRESH_TOKEN];

// 打印發(fā)現(xiàn)有時獲取不到值,是由于多次設(shè)置微信的appKey和appSecret

NSLog(@"%@,===%@===,%@",token,openID,refreshToken);

// 本地持久化,以便access_token的使用、刷新或者持續(xù)

if (token && ![token isEqualToString:@""] && openID && ![openID isEqualToString:@""]) {

[[NSUserDefaults standardUserDefaults] setObject:token forKey:WX_ACCESS_TOKEN];

SLLog(@"%@",token);

[[NSUserDefaults standardUserDefaults] setObject:openID forKey:WX_OPEN_ID];

[[NSUserDefaults standardUserDefaults] setObject:refreshToken forKey:WX_REFRESH_TOKEN];

[[NSUserDefaults standardUserDefaults] synchronize]; // 命令直接同步到文件里,來避免數(shù)據(jù)的丟失

}

[self wechatLoginByRequestForUserInfo];

} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

SLLog(@"error %@",error.localizedFailureReason);

}];

通過調(diào)試發(fā)現(xiàn),在友盟也做了相關(guān)操作:

設(shè)置微信的appKey和appSecret(重復(fù)代理里面設(shè)置)

[[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_WechatSession appKey:URL_APPID appSecret:URL_SECRET redirectURL:@"http://www.xxx.cn/"];

原因是由于兩個地方都做了設(shè)置微信的appKey和appSecret導(dǎo)致的;

解決方法:將友盟的設(shè)置微信的appKey和appSecret注釋就可以了;

如果以后發(fā)現(xiàn)微信登錄集成后不能成功登錄可以試著查看是否重復(fù)注冊appKey和appSecret !!!

寫的不好,還望見諒!~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容