关于微信授权登录并获取Openid以及用户信息

一.集成微信授权登录

二.集成代码

  1. AppDelegate 代码

#import "AppDelegate.h"
#import "WXApi.h"
#import "WXApiManager.h"
@interface AppDelegate ()

@end

@implementation AppDelegate


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    [WXApi registerApp:@"wx1a607bdfc220e2e0" withDescription:@"demo 2.0"];

    // Override point for customization after application launch.
    return YES;
}

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
    return  [WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]];
}

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    return [WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]];
}
2.调起授权代码

//调起授权

  -(void)Auth{

   [WXApiRequestHandler sendAuthRequestScope: kAuthScope
                                        State:kAuthState
                                       OpenID:kAuthOpenID
                             InViewController:self];
    
    
}

//遵循代理方法通过授权得到code 再通过code 得到用户的Openid
- (void)managerDidRecvAuthResponse:(SendAuthResp *)response {
  NSString *URlStr =  [self code:response.code];
    AFHTTPRequestOperationManager *httpClient = [AFHTTPRequestOperationManager manager];
    
    httpClient.requestSerializer = [AFJSONRequestSerializer serializer];
    //如果报接受类型不一致请替换一致text/html或别的
    httpClient.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
//    [httpClient.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
//    [httpClient.requestSerializer setValue:@"utf-8" forHTTPHeaderField:@"charset"];
    // FOR HTTP
    httpClient.responseSerializer = [AFHTTPResponseSerializer serializer];
    httpClient.operationQueue.maxConcurrentOperationCount = 3;
    
    AFSecurityPolicy *securityPolicy = [AFSecurityPolicy defaultPolicy];
    
    securityPolicy.allowInvalidCertificates = YES;
    securityPolicy.validatesDomainName = NO;
    
    httpClient.securityPolicy = securityPolicy;
    
    [httpClient POST:URlStr parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
        NSLog(@"%@", [[NSString alloc] initWithData:responseObject  encoding:NSUTF8StringEncoding] );
        
        
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"%@",error);
    }];
    
    
}

//配置URL
-(NSString*)code:(NSString*)selfCode{
    NSString *str = [NSString stringWithFormat:@"https://api.weixin.qq.com/sns/oauth2/access_token?appid=wx1a607bdfc220e2e0&secret=e13ded42afd77947311038480d7d3b64&code=%@&grant_type=authorization_code",selfCode];
    NSLog(@"%@",str);
    return str;
}


原文地址:https://www.cnblogs.com/yangxiaolong/p/5481151.html