一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - IOS - iOS微信第三方登錄實(shí)例

iOS微信第三方登錄實(shí)例

2021-02-22 14:40st646889325 IOS

這篇文章主要為大家詳細(xì)介紹了iOS微信第三方登錄實(shí)現(xiàn)過程,一步一步告訴大家iOS微信實(shí)現(xiàn)第三方登錄的方法感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了iOS微信第三方登錄,供大家參考,具體內(nèi)容如下

一、準(zhǔn)備工作
1、到微信開放平臺(tái)注冊成開發(fā)者,獲取appid
2、導(dǎo)入WeChatConnection.framework
3、配置URL Schemes  輸入appid  例如wx29ce0f21ea982cb8

二、配置AppDelegate.m

1、 注冊微信

?
1
2
//微信登陸
[WXApi registerApp:WeiXin_AppId withDescription:@"weixin"];

2、設(shè)置函數(shù)

?
1
2
3
4
5
6
//把代理設(shè)置到登陸視圖中
- (BOOL)application:(UIApplication *)application
   handleOpenURL:(NSURL *)url
{
  return [WXApi handleOpenURL:url delegate:[LoginViewController shareLogin]];
}
?
1
2
3
4
5
6
7
- (BOOL)application:(UIApplication *)application
      openURL:(NSURL *)url
 sourceApplication:(NSString *)sourceApplication
     annotation:(id)annotation
{
  return [WXApi handleOpenURL:url delegate:[LoginViewController shareLogin]];
}

三、登陸頁代碼

1、微信登錄授權(quán)比較復(fù)雜,相比QQ,新浪多了幾步,簡單說就是需要三步,第一步,獲取code,這個(gè)用來獲取token,第二步,就是帶上code獲取token,第三步,根據(jù)第二步獲取的token和openid來獲取用戶的相關(guān)信息

2、

第一步:獲取code

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
-(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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
-(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);
         
         
      }
    });
  });
}

第三步:獲取用戶信息

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
-(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];
      }
    });
     
  });
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美日韩亚洲高清不卡一区二区三区 | 白丝校花掀起短裙呻吟小说 | 久久综合给合久久狠狠狠… | 国产农村一一级特黄毛片 | 欧美四虎影院 | 狠狠的撞击发泄h | 暖暖视频免费观看视频中国.韩剧 | 美女靠逼的视频 | 欧美成人日韩 | 含羞草国产亚洲精品岁国产精品 | 性派对videofreeparty| seetube18日本第一次 | 啊用力好大粗黑人小说 | 日本啊v在线观看 | 亚洲精品综合网 | 九九精品成人免费国产片 | 精品一久久香蕉国产线看观 | 日韩性公交车上xxhd免费 | 四虎在线永久免费视频网站 | 精品99一区二区三区麻豆 | 精品人人视屏 | 欧美专区综合 | 天天翘| 91极品女神久色在线播放 | 国产精品怡红院在线观看 | 动漫美女被吸乳羞羞小说 | 日本一区视频 | 久久久无码精品亚洲欧美 | 69av免费视频 | 四虎影视紧急入口地址大全 | 男人午夜视频在线观看 | 99久久er这里只有精品17 | 欧美一卡2卡三卡4卡5卡免费观看 | 性生大片免费看 | 草莓香蕉绿巨人丝瓜榴莲18 | 四虎影免看黄 | 国内精品露脸在线视频播放 | 成人午夜毛片 | 草莓秋葵菠萝蜜绿巨人污 | 日韩免费在线看 | 全黄h全肉细节文在线观看 全彩成人18h漫画 |