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];
      }
    }); 

  });
}

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

(0)

相关推荐

  • iOS微信第三方登录实现

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

  • iOS简单登录LoginViewController、注册RegisterViewController等功能实现方法

    一.个人中心未登录 方法: 加判断登录状态直接打开个人中心页面4,否则出现上面引导登录或注册入口显示 代码如下: #pragma mark addView - (void)addView { //背景图 [self.view setBackgroundColor:[UIColor whiteColor]]; UIImageView *loginImgTips = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"login_tips

  • 手把手教你实现微信小视频iOS代码实现

    前段时间项目要求需要在聊天模块中加入类似微信的小视频功能,这边博客主要是为了总结遇到的问题和解决方法,希望能够对有同样需求的朋友有所帮助. 效果预览: 这里先罗列遇到的主要问题:  1.视频剪裁  微信的小视频只是取了摄像头获取的一部分画面  2.滚动预览的卡顿问题  AVPlayer播放视频在滚动中会出现很卡的问题 接下来让我们一步步来实现. Part 1 实现视频录制 1.录制类WKMovieRecorder实现 创建一个录制类WKMovieRecorder,负责视频录制. @interfa

  • IOS开发用户登录注册模块所遇到的问题

    最近和另外一位同事负责公司登录和用户中心模块的开发工作,开发周期计划两周,减去和产品和接口的协调时间,再减去由于原型图和接口的问题,导致强迫症纠结症状高发,情绪不稳定耗费的时间,能在两周基本完成也算是个不小的奇迹了.本文就总结一下如何满足产品需要的情况下,高效开发一个登录注册模块. 1.利用继承解决界面重复性功能.通常登录注册会有一个独立的设计,而模块内部会有有相似的背景,相似的导航栏样式,相似返回和退出行为,相似的输入框,按钮样式等. 比如上面的的注册和登录模块,就有相同的返回按钮,相同的背景

  • iOS实现第三方微信登录方式实例解析(最新最全)

    项目地址 : https://github.com/zhonggaorong/weixinLoginDemo 最新版本的微信登录实现步骤实现: 1.在进行微信OAuth2.0授权登录接入之前,在微信开放平台注册开发者帐号,并拥有一个已审核通过的移动应用,并获得相应的AppID和AppSecret,申请微信登录且通过审核后,可开始接入流程. 地址: 点击打开链接 2. 下载最新的SDK 地址: 点击打开链接 SDK内容如下: 结构解析: 从上到下依次说明: 1. 静态库,直接拖入工程. 2. re

  • iOS微信第三方登录实例

    本文实例为大家分享了iOS微信第三方登录,供大家参考,具体内容如下 一.准备工作 1.到微信开放平台注册成开发者,获取appid 2.导入WeChatConnection.framework 3.配置URL Schemes  输入appid  例如wx29ce0f21ea982cb8 二.配置AppDelegate.m 1. 注册微信 //微信登陆 [WXApi registerApp:WeiXin_AppId withDescription:@"weixin"]; 2.设置函数 //

  • iOS QQ第三方登录实现

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

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

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

  • laravel5实现微信第三方登录功能

    背景 最近手头一个项目需要实现用户在网站的第三方登录(微信和微博),后端框架laravel5.4. 实现过程以微信网页版第三方登录,其他于此类似,在此不做重复. 准备工作 网站应用微信登录是基于OAuth2.0协议标准构建的微信OAuth2.0授权登录系统. 在进行微信OAuth2.在进行微信OAuth2.0授权登录接入之前,在微信开放平台注册开发者帐号,并拥有一个已审核通过的网站应用,并获得相应的AppID和AppSecret,申请微信登录且通过审核后,可开始接入流程. 总结下来就是: 1.进

  • php微信授权登录实例讲解

    要使用微信授权登录功能需要先在微信开发平台创建应用.然后会获取微信提供给你的appId和AppSecret,然后就可以进行开发了. 当然现有很多大佬封装的微信类库非常齐全,而且还很好用,可以去试试,下面讲解一下基本实现方法. 流程 用户同意授权后获取code,code有效期10分钟 使用code获取access_token调用接口凭证,有效期2小时 refresh_token当access_token过期可以使用这个进行刷新,有效期30天 openid普通用户的标识 刷新token 通过toke

  • 微信第三方登录Android实现代码

    记录一下微信第三方实现登录的方法.还是比较简单. 一.必要的准备工作 1.首先需要注册并被审核通过的微信开放平台帐号,然后创建一个移动应用,也需要被审核: 2.然后到资源中心下载开发微信所需的工具: 下载的网址:点击打开链接,有一个是SDK,一个是签名生成工具还有一个范例代码. 3.将SDK文件夹lib下的jar文件libammsdk.jar导入到项目工程中: 4.你的测试手机需要装好微信客户端: 5.在项目的AndroidManifest.xml文件中添加如下的权限: <uses-permis

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

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

  • 友盟 微信第三方登录示例

    首先获取应用签名看下图 将签名配置到微信开发者平台 集成看官方文档即可 官方集成文档 http://dev.umeng.com/social/android/android-update?spm=0.0.0.0.qOAeOa#5 值得注意必须在调用授权接口mShareAPI.doOauthVerify(this, platform, umAuthListener) 之后才可以获取用户信息,建议在doOauthVerify方法完成的onComplete方法中调用获取用户信息方法mShareAPI.

  • Android开发:微信授权登录与微信分享完全解析

    前言 在移动互联网浪潮中,联网APP已经把单机拍死在沙滩上,很多公司都希望自家应用能够有一套帐号系统,可是许多用户却并不一定买账:我凭啥注册你家应用的帐号?微博,微信,QQ几乎成了每个人手机中的必装应用,于是微信,微博,QQ说了:来来来,你们都可以用我家的帐号登录你家应用,只要你遵循OAuth2.0协议标准就行.于是第三方社交帐号登陆成为了许多新兴应用的选择,由于腾讯官方微信开放平台的在线文档相对最新的SDK有些出入,并且登录相关的文档结构次序有些紊乱,今天就把我的一些经验记录在此,对微信开放平

随机推荐