iOS微信第三方登录实例_IOS

本文实例为大家分享了iOS微信第三方登录,供大家参考,具体内容如下

一、准备工作
1、到微信开放平台注册成开发者,获取appid
2、导入WeChatConnection.framework
3、配置URL Schemes  输入appid  例如wx29ce0f21ea982cb8

二、配置AppDelegate.m

1、 注册微信

//微信登陆
[WXApi registerApp:WeiXin_AppId withDescription:@"weixin"];

2、设置函数

//把代理设置到登陆视图中
- (BOOL)application:(UIApplication *)application
   handleOpenURL:(NSURL *)url
{
  return [WXApi handleOpenURL:url delegate:[LoginViewController shareLogin]];
}
- (BOOL)application:(UIApplication *)application
      openURL:(NSURL *)url
 sourceApplication:(NSString *)sourceApplication
     annotation:(id)annotation
{
  return [WXApi handleOpenURL:url delegate:[LoginViewController shareLogin]];
} 

三、登陆页代码

1、微信登录授权比较复杂,相比QQ,新浪多了几步,简单说就是需要三步,第一步,获取code,这个用来获取token,第二步,就是带上code获取token,第三步,根据第二步获取的token和openid来获取用户的相关信息

2、

第一步:获取code

-(void)weiXinLogin
{
  SendAuthReq* req =[[SendAuthReq alloc] init];
  req.scope = @"snsapi_userinfo,snsapi_base";
  req.state = @"0744" ;
  [WXApi sendReq:req];
} 

-(void)onReq:(BaseReq *)req
{
  NSLog(@"呵呵");
  [self msgHint:@"登陆失败"];
} 

-(void)onResp:(BaseResp *)resp
{
  SendAuthResp* sender = (SendAuthResp*)resp;
  NSString* code = sender.code;
  NSLog(@"啦啦 code = %@",code); 

  MBProgressHUD * hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
  hud.labelText = @"收取用户信息..";
  [self getAccess_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 =[NSString stringWithFormat:@"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 = [NSURL URLWithString:url];
    NSString *zoneStr = [NSString stringWithContentsOfURL:zoneUrl encoding:NSUTF8StringEncoding error:nil];
    NSData *data = [zoneStr dataUsingEncoding:NSUTF8StringEncoding];
    dispatch_async(dispatch_get_main_queue(), ^{
      if (data) {
        NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
        NSString* token = [dic objectForKey:@"access_token"];
        NSString* openid = [dic objectForKey:@"openid"];
        [self getUserInfoWithToken:token openId:openid];
        NSLog(@"token = %@",token);
        NSLog(@"openid = %@",openid); 

      }
    });
  });
}

第三步:获取用户信息

-(void)getUserInfoWithToken:(NSString*)myToken openId:(NSString*)myOpenId
{
  // https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID 

  NSString *url =[NSString stringWithFormat:@"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 = [NSURL URLWithString:url];
    NSString *zoneStr = [NSString stringWithContentsOfURL:zoneUrl encoding:NSUTF8StringEncoding error:nil];
    NSData *data = [zoneStr dataUsingEncoding:NSUTF8StringEncoding];
    dispatch_async(dispatch_get_main_queue(), ^{
      if (data) {
        NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
        NSString* nickName = [dic objectForKey:@"nickname"];
        NSString* wxHeadImgUrl = [dic objectForKey:@"headimgurl"]; 

        NSLog(@"nickName = %@",nickName);
        NSLog(@"headImg = %@",wxHeadImgUrl); 

        NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
        [userDefaults setObject:ON forKey:LogState];
        [userDefaults setObject:ThirdFoudationLogin forKey:LogType];
        [userDefaults setObject:nickName forKey:LoginName];
        [userDefaults setObject:wxHeadImgUrl forKey:UserHeaderPath];
        [userDefaults synchronize]; 

        [MBProgressHUD hideAllHUDsForView:self.view animated:YES];
        [self msgHint:@"微信登陆成功"];
        [self popView];
      }
    }); 

  });
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索iOS第三方登录
ios qq第三方登录实例、微信第三方登录实例、ios微信第三方登录、ios中微信第三方登录、ios10 微信第三方登录,以便于您获取更多的相关知识。

时间: 2024-11-08 23:12:13

iOS微信第三方登录实例_IOS的相关文章

iOS微信第三方登录实现_IOS

一.接入微信第三方登录准备工作.移动应用微信登录是基于OAuth2.0协议标准构建的微信OAuth2.0授权登录系统. 在进行微信OAuth2.0授权登录接入之前,在微信开放平台注册开发者帐号,并拥有一个已审核通过的移动应用,并获得相应的AppID和AppSecret,申请微信登录且通过审核后,可开始接入流程.(注意) 1.下载iOS微信SDK. 下载地址 2.将SDK放到工程目录中. 3.补充导入一些依赖框架. 4.添加URL Types 5.添加iOS9 URL Schemes. 注意:如果

iOS QQ第三方登录实现_IOS

本文实例为大家分享了iOS QQ第三方登录实现代码,供大家参考,具体内容如下 一.准备工作 1.到QQ开放平台(http://connect.qq.com/ )注册成为开发者,申请appkey, 2.在URL Types中添加QQ的AppID,其格式为:"tencent" + AppID    例如tencent1104463316 二.配置AppDelegate.m 1.导入<TencentOpenAPI/QQApiInterface.h> 和<TencentOpe

objective-c-ios 微信第三方登录snsPlatform.loginClickHandler这一句崩溃

问题描述 ios 微信第三方登录snsPlatform.loginClickHandler这一句崩溃 UMSocialSnsPlatform *snsPlatform = [UMSocialSnsPlatformManager getSocialPlatformWithName:UMShareToWechatSession]; 全选复制放进笔记 snsPlatform.loginClickHandler(self,[UMSocialControllerService defaultControl

oauth-求passport实现微信第三方登录示例

问题描述 求passport实现微信第三方登录示例 使用passport-oauth能够应用在实现微信第三方登录吗,如果哦能的话求一个实例链接.跪谢

微信第三方登录-android摄像头权限提醒问题

问题描述 android摄像头权限提醒问题 有个奇怪的问题,app里面需要摄像头权限,当我首次进入app第一个页面的时候并没有提醒是否允许使用摄像头,当我调用微信第三方登录的时候却出现了,这个页面根本没有涉及到摄像头权限. 想问下各位大神,有没有办法让这个提醒在第一个页面提醒? 解决方案 加张图片....... 解决方案二: 关于android的权限问题Android sdcard读写权限问题之一android2.3权限问题 解决方案三: 这个弹出的提示框的代码挪到你起始页面那里阿

服务器-ios微信第三方登陆出现问题

问题描述 ios微信第三方登陆出现问题 iOS使用微信第三方登陆自己的应用的时候,后台说因为移动端的access_token一刷新,导致自己应用的服务器的access_token过期,然后后台对应的账户的数据就不能够正常读取,现在应该怎么办? 解决方案 http://www.cocoachina.com/ios/20140922/9715.html

C# 求一个微信第三方登录的Demo(一键登录),求贴代码

问题描述 C#求一个微信第三方登录的Demo(一键登录),求贴代码C#求一个微信第三方登录的Demo(一键登录),求贴代码C#求一个微信第三方登录的Demo(一键登录),求贴代码C#求一个微信第三方登录的Demo(一键登录),求贴代码C#求一个微信第三方登录的Demo(一键登录),求贴代码 解决方案 解决方案二:这种帖子是否可以删除啊

Android微信第三方登录(个人笔记)_Android

今天在写微信登录,花了半天时间搞定.然后写下自己的笔记,希望帮助更多的人.欢迎各位指教. 微信授权登录,官方说的不是很清楚.所以导致有一部分的坑. 微信注册应用平台的应用签名,下载 微信签名生成工具 输入项目的packageName也可以查看到. (注意:debug.Release 一定要区分,因为2种生成的微信签名不一致,会导致没有跳转.回调....一般在微信开发者上面注册的是正式环境打包好的.)     申请微信开发者账号.应用申请省略.   1. AndroidManifest.xml 权

微信第三方登录(原生)demo【必看篇】

在一家ecstore二开公司有一段时间了,公司希望往自己研发产品上面走,一直在培养新人. 最近要自己去微信登录,自己就在ectore的框架基础上,写的原生微信第三方登录以此来熟悉微信第三方登录,在ecstore上面去写. 一个简单的demo,不是很好,分享给大家,希望能给想做微信第三方登录的朋友带来思路... 首先: 资料准备: 水印图片 28*28 png格式 公司logo 高清图片 108*108 png格式 公司logo 1.在微信开放平台 https://open.weixin.qq.c