procedimientos de autorización de micro-canales Ios y entrada en boxes ---

1. Descargar SDK mensaje micro: https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419319164&lang=zh_CN

 
image.png

2. delante listos APPID / AppSecret
 
image.png

3. Documento de Desarrollo (SDK bibliotecas dependientes +)
 
image.png

 
Los archivos de demostración se pueden arrastrar directamente en el proyecto

 

4. Añadir URL Tipo

Seleccione la columna "blancos" en la "info" barra de pestañas "escribe el URL" añadir "esquema de URL" para la aplicación que se registró Identificación

Incapaz de volver esquema debe ser bueno antes de aplicar la Id de aplicación, si no, vaya a la carta después de la micro Nota:

 
image.png

5. Añadir LSApplicationQueriesSchemes lista blanca


 
image.png

Los trabajos preparatorios así, seguida de la fase de código


1. Registro ID a la micro-canales en didFinishLaunchingWithOptions función del AppDelegate

#import "WXApi.h"
<WXApiDelegate>

//微信注册 [WXApi registerApp:WXAPPid]; 

Método 2. reescritura AppDelegate de handleOpenURL y openURL

con IOS antes de las 9

-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{ return [WXApi handleOpenURL:url delegate:self]; } -(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{ return [WXApi handleOpenURL:url delegate:self]; } 

iOS Después de 9

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options { if [url.host isEqualToString:@"oauth"]){//微信登录 return [WXApi handleOpenURL:url delegate:self]; } return YES; //if ([url.host isEqualToString:@"safepay"]) {}//支付宝用这个 } 

Tres métodos como están escritos en

3. En la página de inicio de sesión clic en el botón en la carta de micro, la escritura de código

- (void)sendWXAuthReq{//复制即可 if([WXApi isWXAppInstalled]){//判断用户是否已安装微信App SendAuthReq *req = [[SendAuthReq alloc] init]; req.state = @"wx_oauth_authorization_state";//用于保持请求和回调的状态,授权请求或原样带回 req.scope = @"snsapi_userinfo";//授权作用域:获取用户个人信息 //唤起微信 [WXApi sendReq:req]; }else{ //自己简单封装的alert [self showAlertControllerWithTitle:@"温馨提示" withMessage:@"未安装微信应用或版本过低"]; } } 
 
mapa del sitio web oficial

4. Haga clic en los usuarios autorizados, el canal de micro cliente se tira hacia arriba, salta a la interfaz de autorización, permitiendo que el usuario hace clic en el cancelar o en la interfaz, los datos de retorno SDK Resp a SendAuth de la persona que llama

En la demo oficial, WXApiManager realiza en WXApiDelegate de - (void) onResp: (BaseResp *) Método de resp y - (void) onReq: (BaseReq *) Método req

Me escribió una carta en agente de micro AppDelegate devolución de llamada se pone OpenID

//微信回调代理
- (void)onResp:(BaseResp *)resp{ // =============== 获得的微信登录授权回调 ============ if ([resp isMemberOfClass:[SendAuthResp class]]) { NSLog(@"******************获得的微信登录授权******************"); SendAuthResp *aresp = (SendAuthResp *)resp; if (aresp.errCode != 0 ) { dispatch_async(dispatch_get_main_queue(), ^{ [self showError:@"微信授权失败"]; }); return; } //授权成功获取 OpenId NSString *code = aresp.code; [self getWeiXinOpenId:code]; } // =============== 获得的微信支付回调 ============ if([resp isKindOfClass:[PayResp class]]){ //支付返回结果,实际支付结果需要去微信服务器端查询 } } 

5.// get señal_acceso, openid, unionid por código

//通过code获取access_token,openid,unionid
- (void)getWeiXinOpenId:(NSString *)code{ /* appid 是 应用唯一标识,在微信开放平台提交应用审核通过后获得 secret 是 应用密钥AppSecret,在微信开放平台提交应用审核通过后获得 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",WXAPPid,WXAppSecret,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 *data1 = [zoneStr dataUsingEncoding:NSUTF8StringEncoding]; if (!data1) { [self showError:@"微信授权失败"]; return ; } // 授权成功,获取token、openID字典 NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data1 options:NSJSONReadingMutableContainers error:nil]; NSLog(@"token、openID字典===%@",dic); NSString *access_token = dic[@"access_token"]; NSString *openid= dic[@"openid"]; // 获取微信用户信息 [self getUserInfoWithAccessToken:access_token WithOpenid:openid]; }); } 

6. El micro-canal de adquisición de información de usuario

-(void)getUserInfoWithAccessToken:(NSString *)access_token WithOpenid:(NSString *)openid { NSString *url =[NSString stringWithFormat:@"https://api.weixin.qq.com/sns/userinfo?access_token=%@&openid=%@",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) { [self showError:@"微信授权失败"]; return ; } // 获取用户信息字典 NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil]; //用户信息中没有access_token 我将其添加在字典中 [dic setValue:access_token forKey:@"token"]; NSLog(@"用户信息字典:===%@",dic); //保存改用户信息(我用单例保存) [GLUserManager shareManager].weiXinIfon = dic; //微信返回信息后,会跳到登录页面,添加通知进行其他逻辑操作 [[NSNotificationCenter defaultCenter] postNotificationName:@"weiChatOK" object:nil]; }); }); } 

7. La página de registro de observadores (de acuerdo con las necesidades del resto de la basura) nuestra tripartita determinar si la autenticación de inicio de sesión teléfono ....

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(weiChatOK) name:@"weiChatOK" object:NULL]; -(void)weiChatOK{//第三方登录 NSLog(@"我收到微信登录的信息 通知了---%@",[GLUserManager shareManager].weiXinIfon); NSDictionary *weChatDic = [GLUserManager shareManager].weiXinIfon; //判断三方登录是否手机认证接口(这里就按照需求走了) NSMutableDictionary *parameters = [NSMutableDictionary dictionaryWithCapacity:3]; [parameters setValue:@"3" forKey:@"type"]; [parameters setValue:weChatDic[@"openid"] forKey:@"id"]; [parameters setValue:weChatDic[@"token"] forKey:@"token"]; [[GLUserManager shareManager] weChatIsThAuthPhoneWithParameters:parameters success:^(NSDictionary * _Nonnull respDic) { NSLog(@"%@",respDic); } failure:^(NSError * _Nonnull error) { }]; } 

8. Recuerde notificación de alta

-(void)dealloc{ [[NSNotificationCenter defaultCenter] removeObserver:self name:@"weiChatOK" object:self]; } 

9. La finalización con éxito ~ ~ ~
Resumen: El esquema debe prestar atención y listas blancas aquí, haga lo contrario Entrar efecto de micro-canales, esquema de micro-canal debe llenar el appid aplicación bueno, antes de que el documento no es un buen aspecto, lo que resulta en un buen número de desvíos



Autor: seleccione una ciudad de su casa _ caracol
enlace: https: //www.jianshu.com/p/d6b63dc9c75b
Fuente: libros de Jane
tienen derechos de autor por el autor. reimpresión comercial póngase en contacto con el autor autorizada, reimpresión no comercial por favor indique la fuente.

Supongo que te gusta

Origin www.cnblogs.com/wodehao0808/p/12510640.html
Recomendado
Clasificación