协议 //注册appid">
美文网首页
iOS微信授权

iOS微信授权

作者: 倪大头 | 来源:发表于2018-02-10 09:53 被阅读35次

import "WXApi.h"

遵守<WXApiDelegate>协议

//注册appid

[WXApi registerApp:@"wxxxxxxxxxxxxx" withDescription:@"test"];
//调用
if ([WXApi isWXAppInstalled]) {
     SendAuthReq *req = [[SendAuthReq alloc] init];
     req.scope = @"snsapi_userinfo";
     req.state = @"meipian";
     [WXApi sendReq:req];
}else {
     UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"提示" message:@"请安装微信客户端" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
     [alert show];
}
//授权后回调 WXApiDelegate
- (void)onResp:(BaseReq *)resp {
    /*
     ErrCode ERR_OK = 0(用户同意)
     ERR_AUTH_DENIED = -4(用户拒绝授权)
     ERR_USER_CANCEL = -2(用户取消)
     code    用户换取access_token的code,仅在ErrCode为0时有效
     state   第三方程序发送时用来标识其请求的唯一性的标志,由第三方程序调用sendReq时传入,由微信终端回传,state字符串长度不能超过1K
     lang    微信客户端当前语言
     country 微信用户当前国家信息
     */
    SendAuthResp *aresp = (SendAuthResp *)resp;
    if (aresp.errCode == 0) {
        NSString *code = aresp.code;
        
        NSString *url = [NSString stringWithFormat:@"https://api.weixin.qq.com/sns/oauth2/access_token?appid=%@&secret=%@&code=%@&grant_type=authorization_code",@"wxxxxxxxxx",@"6df33aerd977aegewarr0ae1bc65a",code];
        
        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];
                    
                    //[dic objectForKey:@"access_token"];
                    NSString *openId = [dic objectForKey:@"openid"];
                    
                    NSString *url = [NSString stringWithFormat:@"https://api.weixin.qq.com/sns/userinfo?access_token=%@&openid=%@",[dic objectForKey:@"access_token"],openId];
                    
                    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];
                                //拿到openId,微信昵称,头像
                                NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:openId,@"wx_open_id",[dic objectForKey:@"nickname"],@"nickname",[dic objectForKey:@"headimgurl"],@"headImage", nil];
                            }
                        });
                    });
                }
            });
        });
    }
}

相关文章

  • iOS微信授权

    import "WXApi.h" 遵守协议 //注册appid

  • apche服务器下无后缀文件配置浏览器访问自动下载

    1.在配置最新的IOS app 微信授权登录时 SDK时,碰到一个问题。服务器端需要配置IOS唤起微信APP授权的...

  • 2018-11-30

    iOS版APP只使用微信授权登录且用户未安装微信如何解决? - 知乎

  • 微信登录

    iOS微信授权登录+Universal Link(通用链接)[https://www.jianshu.com/p/...

  • iOS微信授权登录

    微信开发平台:https://open.weixin.qq.comiOS Demo:https://github....

  • IOS 微信授权登录

    没有添加白名单的话只能用短信登录 Scheme白名单问题(无法判断手机是否安装微信等) -canOpenURL: ...

  • iOS实现微信授权

    微信是一个在开发中经常会使用到的平台,比如微信登录、授权、支付、分享。今天我们来看看如何在自己的应用里面集成微信授...

  • iOS实现微信授权

    微信授权。 1、集成微信API教程有很多, 就不啰嗦了 . 额外加入:下面两个文件 2、appdelegate.m...

  • 企业微信OAuth获取授权回调两次

    最近在做企业微信应用时,遇到OAuth获取授权回调了两次,导致获取不到code而报错。 IOS微信端企业微信端、安...

  • iOS微信授权登录code提示被使用过失效

    【iOS/swift】今天解决了微信授权登录之后,获取code,将微信与app账号绑定出现的code被使用失效的问...

网友评论

      本文标题:iOS微信授权

      本文链接:https://www.haomeiwen.com/subject/ephbaxtx.html