iOS微信第三方登录实例
本文实例为大家分享了iOS微信第三方登录,供大家参考,具体内容如下
一、准备工作
1、到微信开放平台注册成开发者,获取appid
2、导入WeChatConnection.framework
3、配置URLSchemes 输入appid 例如wx29ce0f21ea982cb8
二、配置AppDelegate.m
1、注册微信
//微信登陆 [WXApiregisterApp:WeiXin_AppIdwithDescription:@"weixin"];
2、设置函数
//把代理设置到登陆视图中 -(BOOL)application:(UIApplication*)application handleOpenURL:(NSURL*)url { return[WXApihandleOpenURL:urldelegate:[LoginViewControllershareLogin]]; }
-(BOOL)application:(UIApplication*)application openURL:(NSURL*)url sourceApplication:(NSString*)sourceApplication annotation:(id)annotation { return[WXApihandleOpenURL:urldelegate:[LoginViewControllershareLogin]]; }
三、登陆页代码
1、微信登录授权比较复杂,相比QQ,新浪多了几步,简单说就是需要三步,第一步,获取code,这个用来获取token,第二步,就是带上code获取token,第三步,根据第二步获取的token和openid来获取用户的相关信息
2、
第一步:获取code
-(void)weiXinLogin { SendAuthReq*req=[[SendAuthReqalloc]init]; req.scope=@"snsapi_userinfo,snsapi_base"; req.state=@"0744"; [WXApisendReq:req]; } -(void)onReq:(BaseReq*)req { NSLog(@"呵呵"); [selfmsgHint:@"登陆失败"]; } -(void)onResp:(BaseResp*)resp { SendAuthResp*sender=(SendAuthResp*)resp; NSString*code=sender.code; NSLog(@"啦啦code=%@",code); MBProgressHUD*hud=[MBProgressHUDshowHUDAddedTo:self.viewanimated:YES]; hud.labelText=@"收取用户信息.."; [selfgetAccess_tokenWithCode:code]; }
第二步获取token
-(void)getAccess_tokenWithCode:(NSString*)myCode { //https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code NSString*url=[NSStringstringWithFormat:@"https://api.weixin.qq.com/sns/oauth2/access_token?appid=%@&secret=%@&code=%@&grant_type=authorization_code",kWXAPP_ID,kWXAPP_SECRET,myCode]; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),^{ NSURL*zoneUrl=[NSURLURLWithString:url]; NSString*zoneStr=[NSStringstringWithContentsOfURL:zoneUrlencoding:NSUTF8StringEncodingerror:nil]; NSData*data=[zoneStrdataUsingEncoding:NSUTF8StringEncoding]; dispatch_async(dispatch_get_main_queue(),^{ if(data){ NSDictionary*dic=[NSJSONSerializationJSONObjectWithData:dataoptions:NSJSONReadingMutableContainerserror:nil]; NSString*token=[dicobjectForKey:@"access_token"]; NSString*openid=[dicobjectForKey:@"openid"]; [selfgetUserInfoWithToken:tokenopenId:openid]; NSLog(@"token=%@",token); NSLog(@"openid=%@",openid); } }); }); }
第三步:获取用户信息
-(void)getUserInfoWithToken:(NSString*)myTokenopenId:(NSString*)myOpenId { //https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID NSString*url=[NSStringstringWithFormat:@"https://api.weixin.qq.com/sns/userinfo?access_token=%@&openid=%@",myToken,myOpenId]; NSLog(@"infoUrl=%@",url); dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),^{ NSURL*zoneUrl=[NSURLURLWithString:url]; NSString*zoneStr=[NSStringstringWithContentsOfURL:zoneUrlencoding:NSUTF8StringEncodingerror:nil]; NSData*data=[zoneStrdataUsingEncoding:NSUTF8StringEncoding]; dispatch_async(dispatch_get_main_queue(),^{ if(data){ NSDictionary*dic=[NSJSONSerializationJSONObjectWithData:dataoptions:NSJSONReadingMutableContainerserror:nil]; NSString*nickName=[dicobjectForKey:@"nickname"]; NSString*wxHeadImgUrl=[dicobjectForKey:@"headimgurl"]; NSLog(@"nickName=%@",nickName); NSLog(@"headImg=%@",wxHeadImgUrl); NSUserDefaults*userDefaults=[NSUserDefaultsstandardUserDefaults]; [userDefaultssetObject:ONforKey:LogState]; [userDefaultssetObject:ThirdFoudationLoginforKey:LogType]; [userDefaultssetObject:nickNameforKey:LoginName]; [userDefaultssetObject:wxHeadImgUrlforKey:UserHeaderPath]; [userDefaultssynchronize]; [MBProgressHUDhideAllHUDsForView:self.viewanimated:YES]; [selfmsgHint:@"微信登陆成功"]; [selfpopView]; } }); }); }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。