zoukankan      html  css  js  c++  java
  • 微信登录 分享 原生文档接入

    1,终端导入  pod 'WechatOpenSDK'

    2,https://open.weixin.qq.com 获取应用的

    AppID:wx4519c7c409cbd9a3

    AppSecret   

    3,打开应用  info-URL_type  加入 AppID:wx4519c7c409cbd9a3

    再info-sourse code 里面加入白名单  

        <key>LSApplicationQueriesSchemes</key>

        <array>

            <string>weixin</string>

            <string>wechat</string>

        </array>

    4,

    #import "WXApi.h"  

    <WXApiDelegate>

    在didFinishLaunchingWithOptions 注册微信

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

        // Override point for customization after application launch.

            [WXApi registerApp:Wx_Appid];

        return YES;

    }

     9.0系统后

    - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options{

        [WXApi handleOpenURL:url delegate:self];

        return YES;

       }

    - (void)onResp:(BaseResp *)resp{

        

        

        if([resp isKindOfClass:[SendAuthResp class]]){

            SendAuthResp *rep = (SendAuthResp *)resp;

            if(rep.errCode == 0){

                [[NSNotificationCenter defaultCenter]postNotificationName:@"wxchaen" object:@{@"code":rep.code}];

            }

        }else if([resp isKindOfClass:[SendMessageToWXResp class]]){

             if (resp.errCode == 0) {

                 NSLog(@"分享成功");

             }else{

                  NSLog(@"分享失败");

             }

        }

    }

    在第三方登录界面

          if([WXApi isWXAppInstalled]){

                SendAuthReq *reques = [[SendAuthReq alloc]init];

                reques.state = @"wx.oauth2_authorization_state";

                reques.scope = @"snsapi_userinfo";

                [WXApi sendReq:reques];

            }

    分享

       WXMediaMessage *message = [WXMediaMessage message];

            message.title = @"分享标题";

            message.description = @"分享描述";

            [message setThumbImage:[UIImage imageNamed:@"wx"]];

       

            WXWebpageObject *webpageObject = [WXWebpageObject object];

            webpageObject.webpageUrl = @“”;

            message.mediaObject = webpageObject;

            

            SendMessageToWXReq *req = [[SendMessageToWXReq alloc] init];

            req.bText = NO;

            req.message = message;

            // 微信好友

            req.scene = WXSceneTimeline;//朋友圈

     req.scene =WXSceneSession;//好友

                   [WXApi sendReq:req];

    在第三方登录界面

    -(void)viewWillAppear:(BOOL)animated{

        [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(loginsecess:) name:@"wxchaen" object:nil];

            [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(payresult:) name:@"payresult" object:nil];

           [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(payfail:) name:@"payfail" object:nil];

        

        

    }

    -(void)loginsecess:(NSNotification *)notification{

        AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

        manager.responseSerializer = [AFHTTPResponseSerializer serializer];

        NSMutableDictionary *param = [NSMutableDictionary dictionary];

        [param setObject:Wx_Appid forKey:@"appid"];

           [param setObject:Wx_Srecret forKey:@"secret"];

          [param setObject:notification.object[@"code"] forKey:@"code"];

              [param setObject:@"authorization_code" forKey:@"grant_type"];

        

        [manager GET:@"https://api.weixin.qq.com/sns/oauth2/access_token" parameters:param progress:^(NSProgress * _Nonnull downloadProgress) {

            

            

        } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {

            

            NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingAllowFragments error:nil];

            NSLog(@"dict == %@",dict);

            [self getuserinfo:dict];

            

        } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

            

            

        }];

    }

    -(void)getuserinfo:(NSDictionary *)dic{

        AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

        manager.responseSerializer = [AFHTTPResponseSerializer serializer];

        NSMutableDictionary *param = [NSMutableDictionary dictionary];

        [param setObject:[NSString stringWithFormat:@"%@",dic[@"openid"]] forKey:@"openid"];

            [param setObject:[NSString stringWithFormat:@"%@",dic[@"access_token"]] forKey:@"access_token"];

        

        [manager GET:@"https://api.weixin.qq.com/sns/userinfo" parameters:param progress:^(NSProgress * _Nonnull downloadProgress) {

            

            

        } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {

            

            NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingAllowFragments error:nil];

            NSLog(@"dict == %@",dict);

           [self PostUrl:dict];//吧获取的信息传给后台

            

        } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

            

            

        }];

    }

  • 相关阅读:
    找工作刷题-------->Java相关
    ElasticSearch--------->批量索引------->推荐方法、注意事项、性能优化
    ElasticSearch--------------------->索引设计--------------------->数据库数据迁移至ES,如何根据tables特点设计ES的index/type/shards数目?
    Oracle------------->PL/SQL---------------->连接oracle数据库
    责任链模式
    程序员必备软件
    反射
    Linux 磁盘扩容
    1.4 java8 LocalDate
    观察者模式
  • 原文地址:https://www.cnblogs.com/liaolijun/p/10112703.html
Copyright © 2011-2022 走看看