zoukankan      html  css  js  c++  java
  • 关于微信授权登录并获取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;
    }


  • 相关阅读:
    问题2 机器学习篇 正则化L1和L2有什么区别?
    numpy 数组拼接方法
    问题1 机器学习篇 如何解决过拟合(overfiting)?
    低阶 TensorFlow 基础知识
    k-Nearest Neighbors 实战2 使用kNN算法改进约会网站的配对结果
    k-Nearest Neighbors 实战1 简单的电影分类实例
    VirtualBox使用
    知乎登录设计思考
    微信返回上一页停留在上次点击的位置
    好的网站-一直在收集
  • 原文地址:https://www.cnblogs.com/yangxiaolong/p/5481151.html
Copyright © 2011-2022 走看看