iOS第三方分享,登录

原创 2017年01月03日 16:01:08

今天分享的是一些第三方分享,登录 我认为的可能会遇到的坑点(国内的分享一般都是 腾讯平台、QQ平台、微博平台)(尤其是微信,QQ的这两个平台存在好多一样的方法名,基础公共类,初次使用可能会遇到好多坑,可能还会涉及到微信支付)

基础的环境配置,以及对应的平台注册这些相信这些方面没有太多的坑 这里就不说了



- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url    在这个方法里面就要区分是哪个平台操作行为来的回调  这里面我是按照他们的 appid 进行区分的  (这里区分QQ平台是登录 还是分享,我记得之前一个是带着  QQ是分享   一个带的是 tencent 是登录,这个建议自己打印验证一下)


-(void) onResp:(BaseResp*)resp  微信登陆,分享,支付   QQ 的分享都会以代理的形式回调这个方法   所以这里需要处理一下 

-(void) onResp:(BaseResp*)resp{
    
    WS(weakSelf);
    if ([resp isKindOfClass:[SendAuthResp class]]) {
        // 微信登陆的返回信息
        SendAuthResp *sendAuthResp = (SendAuthResp *)resp;
        [self getAccess_Token:sendAuthResp.code];
    }else if ([resp isKindOfClass:[SendMessageToQQResp class]]) {
         // QQ分享
        SendMessageToQQResp * tmpResp = (SendMessageToQQResp *)resp;
        if (tmpResp.type == ESENDMESSAGETOQQRESPTYPE && [tmpResp.result integerValue] == 0) {
            //  分享成功
        }else if (tmpResp.type == ESENDMESSAGETOQQRESPTYPE && [tmpResp.result integerValue] == -4){
            // 取消分享
        }
    }else if ([resp isKindOfClass:[SendMessageToWXResp class]]) {
        
        // 微信分享
        //把返回的类型转换成与发送时相对于的返回类型,这里为SendMessageToWXResp
        SendMessageToWXResp *sendResp = (SendMessageToWXResp *)resp;
        if (sendResp.errCode == 0) {
            // 分享成功
        } else if (sendResp.errCode == -2) {
            // 取消分享
        }
    }else if ([resp isKindOfClass:[PayResp class]]) {
        // 微信支付回调
        //支付返回结果,实际支付结果需要去微信服务器端查询
        NSString *strMsg;
        
        switch (resp.errCode) {
            case WXSuccess:
                strMsg = @"支付结果:成功!";
               
                NSLog(@"支付成功-PaySuccess,retcode = %d", resp.errCode);
                break;
                
            default:
                strMsg = [NSString stringWithFormat:@"支付结果:失败!retcode = %d, retstr = %@", resp.errCode,resp.errStr];

                NSLog(@"错误,retcode = %d, retstr = %@", resp.errCode,resp.errStr);
                break;
        }
    }

}


这里需要注意的是 QQ 登录的话 返回信息需要自己来处理 自己主动调用接口去获取信息

- (void)tencentDidLogin
{
    // 获取用户信息
    if (tencentOAuth.accessToken && 0 != [tencentOAuth.accessToken length])
    {
        //  记录登录用户的OpenID、Token以及过期时间
        [tencentOAuth getUserInfo];
    }
}


在调取 getUserInfo 获得登录后返回的信息之后 那么下面的方法会回调回来登陆的具体信息

#pragma mark 微信 登录后的信息需要 代理的方法获取
- (void)getUserInfoResponse:(APIResponse *)response
{
    WS(weakSelf);
    if (response.retCode == URLREQUEST_SUCCEED && kOpenSDKErrorSuccess == response.detailRetCode) {
        
        NSMutableDictionary *dic = (NSMutableDictionary *)response.jsonResponse;
        [dic setObject:tencentOAuth.accessToken forKey:@"access_token"];
        [dic setObject:tencentOAuth.openId forKey:@"idstr"];
        
        if (weakSelf.mFinsihBlock) {
            weakSelf.mFinsihBlock([dic JSONString],nil);
        }
    }else{

        if (weakSelf.mFinsihBlock) {
            weakSelf.mFinsihBlock(nil,[NSError errorWithDomain:@"授权失败" code:400 userInfo:nil]);
        }
    }
}


// 这个是微博的回调处理 我们只是需要区分是登录回调 还是 分享回调就行 这个坑不多

#pragma mark -- WeiboSDKDelegate 微博代理方法
- (void)didReceiveWeiboResponse:(WBBaseResponse *)response {
    
    WS(weakSelf);
    if ([response isKindOfClass:WBSendMessageToWeiboResponse.class])
    {

        if (response.statusCode == 0) {
             //  分享成功
        }else {
             //  分享失败
        }
    }
    else if ([response isKindOfClass:WBAuthorizeResponse.class]){
        if (response.statusCode == 0) {
            
           // 登录成功
        }
        else {

           // 登录失败
        }
    }
}



、、到这里那么一些第三方平台的登录,分享需要注意的坑点就基本解决了  (接下来会给大家分享一下推送方面的处理) 另外笔者正在学习cordova + ionic 混合开发,OC swift 这一块最近有点放下

Android之微信第三方登录

Android微信第三方登录 个人在用到微信登陆接口的时候发现官方教程很难一下子看懂,尤其是对一些刚刚接触第三方登录的开发者来说。 官方教程:点击打开链接 1.第一步:申请你的AppID...
  • starzhangkiss
  • starzhangkiss
  • 2016年08月10日 13:32
  • 1430

iOS微信平台登录遇到的问题

微信登录报错:Error Domain=com.alamofire.error.serialization.response Code=-1016 "Request failed: unaccepta...
  • u013929312
  • u013929312
  • 2015年04月07日 17:28
  • 1900

iOS-微信分享成功回调问题

本人用ShareSDK做分享和第三方登录,登录先不讲,本节只做分享成功或失败后回调问题。相信好多人会有这个疑惑就是在微信分享成功后没有成功后的方法回调,我在ShareSDK论坛也发表过帖子问过,Sha...
  • SSY_1992
  • SSY_1992
  • 2017年12月15日 11:50
  • 2914

ios微信和QQ原生分享

ios微信和QQ原生分享
  • L_weiguo
  • L_weiguo
  • 2016年10月12日 16:54
  • 1705

ShareSDK微信支付成功不调用onResp、openURL、handleOpenURL等方法

ShareSDK最新的是3.x版本,以前老的2.x需要更新,毕竟ios9已经更新啦。然后ShareSDK里的最新方法也是肯定更换,这是比较痛苦的事情,项目里又要重新来一遍,检查、测试等。 按照官网的...
  • WZios
  • WZios
  • 2016年05月20日 11:36
  • 1289

iOS 微信 第三方登录实现

详细全面介绍iOS开发接入 微信 登录的所有工作
  • doubleface999
  • doubleface999
  • 2017年08月04日 14:50
  • 877

iOS 【微信登录流程以及遇到的一些坑】

最近公司中为了降低登录门槛,让用户不再每次都输入账号密码进行登录。所以引入了微信登录和QQ登录,让用户更加便捷的登录操作。大多数的第三方登录都是相仿的,按照集成文档一步步的集成就好了,仔细阅读文档一般...
  • Felicity294250051
  • Felicity294250051
  • 2017年03月17日 10:18
  • 7223

iOS之微信支付开发

因为项目需求,支付方式添加了微信支付。之前做过银联的支付,所以,感觉不会太难。 使用的SDK为1.7.是13年12月份的,还是手动管理内存。 实际支付的代码不难,就是几个配置,因为项目之前做过微信分享...
  • ralbatr
  • ralbatr
  • 2015年04月20日 17:54
  • 20021

iOS集成友盟第三方分享

可以参考demo来做,demo是可以跑起来的,如果用demo,只需要把key和ID换掉就好了,点击下载demo注册APPKey去友盟注册新AppKey拿到注册的AppKey导入SDK导入友盟提供的SD...
  • Coco__D
  • Coco__D
  • 2017年05月10日 21:28
  • 2528

iOS开发之第三方分享QQ分享,史上最新最全第三方分享QQ方式实现

本文章源码地址: https://github.com/zhonggaorong/QQLoginDemo 项目搭建参考:  (包含QQ登录源码下载 、 QQ sdk集成) http://b...
  • zhonggaorong
  • zhonggaorong
  • 2016年06月22日 17:29
  • 10657
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS第三方分享,登录
举报原因:
原因补充:

(最多只允许输入30个字)