美文网首页Object-CiOS攻城狮iOS Developer
iOS 微信网页授权登录--不安装微信也能登录的那种

iOS 微信网页授权登录--不安装微信也能登录的那种

作者: 微辣小龙虾 | 来源:发表于2017-08-23 18:12 被阅读190次

    记一次APP审核因微信登录被拒的惨痛经历。。。

    被拒信息。。。。。


    image.png

    苹果大大说我不能强迫用户下载微信。。。需要在用户没有微信的时候调用网页授权登录,坑爹的微信开发文档中说移动应用上微信登录只提供原生的登录方式。。。


    image.png

    还好SDK中是感人的。。提供了另外一种授权方式。。


    image.png
    但是这种授权方式也有坑啊。。。。

    😤
    如果你把调用该语法的地方放到了 viewWillAppear 或者viewDidLoad中。。恭喜你,你会发现打开的页面一直白屏。。
    😤 好了吐槽够了。。上代码吧。配置方式就省了,文档写的还算清楚

    @interface MJWeChatLogVC ()<WXApiDelegate>
    {
        BOOL send;//加个判断是否发送请求登录信息的状态
    }
    @end
    
    只有在页面加载完毕后才能调用微信登录。。。。
    -(void)viewDidAppear:(BOOL)animated
    {
        [super viewDidAppear:animated];
        if (!send) {
           [self wechatLogin];
        }
        
    }
    
    发送登录请求
    -(void)wechatLogin
    {
        SendAuthReq* req =[[SendAuthReq alloc ] init ] ;
        req.scope = @"snsapi_userinfo" ;
        req.state = @"APPName" ;
        req.openID = @"w**************";
        send = YES;
        if ([WXApi isWXAppInstalled])
        {
            [WXApi sendReq:req];
        }else
        {
            [WXApi sendAuthReq:req viewController:self delegate:self];
        }
        
    
    
    }
    
    实现微信回调。。
    #pragma mark - WXDelegate
    -(void)onResp:(BaseResp*)resp{
         if ([resp isKindOfClass:[SendAuthResp class]])
        {
            SendAuthResp * res = (SendAuthResp*)resp;
           
            switch (resp.errCode) {
                case 0://用户同意
                {
                    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
                        [[NSNotificationCenter defaultCenter] postNotificationName:WeChat_log_seuuess object:nil userInfo:@{@"code":res.code}];
                    });
                }
                    break;
                case -4://用户拒绝授权
                    [[NSNotificationCenter defaultCenter] postNotificationName:WeChat_log_error object:nil ];
                    break;
                case -2://用户取消
                    [[NSNotificationCenter defaultCenter] postNotificationName:WeChat_log_error object:nil ];
                    break;
                default:
                    break;
            }
    
        }
    
       }
    

    长记性吧。。。/(ㄒoㄒ)/~~

    相关文章

      网友评论

      • 大虾咪:你好,知道怎么取消登录授权么 微信文档没有找到

      本文标题:iOS 微信网页授权登录--不安装微信也能登录的那种

      本文链接:https://www.haomeiwen.com/subject/zdljdxtx.html