iOS微信登录/绑定


Step:1 (调用微信的SDK)
SendAuthReq* req =[[SendAuthReq alloc ] init ];
            req.scope = @"snsapi_userinfo" ;
            req.state = @"wechat_sdk_demo" ;
            [WXApi sendReq:req];



Step:2 (接收微信回调的通知, 拿着回来的code(类型标识符 ), 请求微信服务器 , 获取 access_token和 openid )

#pragma mark -  微信支付成功或者失败回调
//在Appdelegate中写
-(void) onResp:(BaseResp*)resp {
    NSString *strMsg = [NSString stringWithFormat:@"errcode:%d", resp.errCode];
     NSString *strTitle;
    if ([resp isKindOfClass:[SendAuthResp class]]) {
        SendAuthResp *authResp = (SendAuthResp *)resp;
        NSLog(@"微信回调 %@",authResp.code);
          // 发送通知
        [[NSNotificationCenter defaultCenter] postNotificationName:@"YJHAR" object:authResp.code];
    }
}


#pragma mark - 获取微信 access_token
// 自己写的通知
( 请求微信服务器

- (void)clickYAR:(NSNotification *)fiction
{
    self.codeStr = fiction.object;
    NSDictionary *parameter = @{@"appid":@"wx3bd806653ef0a678",@"secret":@"5704f4aecf5654464c94842179cca381",@"code":self.codeStr,@"grant_type":@"authorization_code"};
    [[NetWorkUtil shareInstace] getResultWithParameter:parameter urlStr:@"https://api.weixin.qq.com/sns/oauth2/access_token?" successBlock:^(id resDict) {
        NSNumber *code = CODE(resDict);
        if ([code integerValue] == CODE_SUCCESS) {
            [self access_token:[resDict objectForKey:@"access_token"] openid:[resDict objectForKey:@"openid"]];
        } else {
            NSString *errMsg = MESSAGE(resDict);
            [CommonMethod showAlterMessage:errMsg];
        }
    } failureBlock:^(NSString *error) {
        [CommonMethod showAlterMessage:kConnectFailAlertMessage];
    }];
}




Step:3 ( 请求微信服务器,通过微信access_token获取微信个人信息(微信昵称 头像等))
#pragma mark - 通过微信access_token获取个人信息
- (void)access_token:(NSString *)access_token openid:(NSString *)openid
{
    NSDictionary *parameter = @{@"access_token":access_token,@"openid":openid};
    [[NetWorkUtil shareInstace] getResultWithParameter:parameter urlStr:@"https://api.weixin.qq.com/sns/userinfo?" successBlock:^(id resDict) {
      NSNumber *code = CODE(resDict);
        if ([code integerValue] == CODE_SUCCESS) {
            [self name:[resDict objectForKey:@"nickname"] head_url:[resDict objectForKey:@"headimgurl"]];
        } else {
            NSString *errMsg = MESSAGE(resDict);
            [CommonMethod showAlterMessage:errMsg];
        }
    } failureBlock:^(NSString *error) {
        [CommonMethod showAlterMessage:kConnectFailAlertMessage];
    }];
}



Step:4 (请求服务端, 把获取到的微信信息发送到自己的服务器)
#pragma mark - 拿到的个人信息 绑定微信
- (void)name:(NSString *)name head_url:(NSString *)head_url
{
     NSString *token = TOKEN(kTokenKey);
    NSString *objId = OBJID(OBJkey);
    NSDictionary *parameter = @{@"code":self.codeStr,@"token":token,@"user_id":objId,@"source_equ":@"ios",@"name":name,@"head_url":head_url};
    [[NetWorkUtil shareInstace] postResultWithParameter:parameter urlStr:kNSStringFormat(ServerAddress, kUrlStrupdateDoctorThird) successBlock:^(id resDict) {
        NSNumber *code = CODE(resDict);
        if ([code integerValue] == CODE_SUCCESS) {
            self.nickName = name;
            [self.tableView reloadData];
             //绑定成功 或者是登录成功
        } else {
            NSString *errMsg = MESSAGE(resDict);
            [CommonMethod showAlterMessage:errMsg];
        }
    } failureBlock:^(NSString *error) {
        [CommonMethod showAlterMessage:kConnectFailAlertMessage];
    }];
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值