iOS第三方登录(微信、qq、微博)

本文会介绍iOS常用的第三方登录,包括微信、QQ、微博,文章前部分会介绍每个平台的API集成及使用方法,文章后部分会介绍对三方登陆集成一起的三方框架ShareSDK(友盟也是可以的)。

微信登录:
集成前先去微信开放平台(地址https://open.weixin.qq.com)注册账号及注册APP,来获取appkey。注册APP的时候注意最好是iOS版和安卓版注册到一起,不然只注册一个端会导致注册另一端的时候提现APP已存在的尴尬局面。微信登录及支付接口是高级接口需要企业认证才可使用,企业认证费用300元/次,腾讯会委托三方认证公司去认证,审核期三天左右。

1.用cocoapods导入微信SDK


 pod 'WechatOpenSDK'

2.在.pch文件中导入微信SDK头文件


#import "WXApi.h"

3.在AppDelegate文件中注册微信SDK


[WXApi registerApp:KWeChatAppID];//传入微信平台注册的APPkey

4.唤起微信要添加这个方法(下面QQ、微博也是这个方法不在细说)


- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation

#pragma makr ios9之后方法

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

5.添加URL Schemes


project~>TARGETS~>info~>URL Type

6.授权登录

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

    req.scope = @"snsapi_userinfo";

    req.state = @"GSTDoctorApp";

    if ([WXApi isWXAppInstalled]) {//有微信启动微信登录,没有微信 到网页版登录

        [WXApi sendReq:req];

    }else{

        [WXApi sendAuthReq:req viewController:self delegate:self];

    }

7.回调

授权成功后会走回调-(void) onResp:(BaseResp*)resp,没错对的,还是走分享的回调。微信和qq的分享登录回调都是这个。

if ([resp isKindOfClass:[SendAuthResp class]]) {//微信登录

        if (resp.errCode == WXSuccess) {

            SendAuthResp *temp = (SendAuthResp *)resp;

            NSDictionary *dic = @{@"info":temp.code};

            [[NSNotificationCenter defaultCenter] postNotificationName:Notication_WeChatLogin object:nil userInfo:dic];

        }

    }

授权成功的回调里面会拿到temp.code,这个参数用来获取微信的登录信息

8.获取微信登录信息

NSString *accessUrlStr = [NSString stringWithFormat:@"%@/oauth2/access_token?appid=%@&secret=%@&code=%@&grant_type=authorization_code", KWXBaseUrl, KWeChatAppID, KWXSecret,code];

    AFHTTPSessionManager *manger = [AFHTTPSessionManager manager];

    manger.responseSerializer.acceptableContentTypes = nil;

    [manger GET:accessUrlStr parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {

        NSString *openid = responseObject[@"openid"];

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

    }];

拼接方式就是上面的accessUrlStr,其中KWXSecret是微信平台生成的APPsecret,这个东西的生成每次都需要管理员去扫码,而且每次生成的会变化,一次新的生成会导致旧版的实效,所以不要去多次生成。

QQ和微博也是一样的方法,不在细说,下面讲解ShareSDK的三方登录方法

ShareSDK登录:

ShareSDK登录是把多平台的三方登录整合到了一起,但是每个三方平台仍然需要去注册响应的账号获取appkey。微信登录仍然需要去企业认证来获取高级接口

1.用cocoapods导入SDK

  #ShareSDK

  pod 'mob_sharesdk'

  pod 'mob_sharesdk/ShareSDKExtension'

  pod 'mob_sharesdk/ShareSDKPlatforms/QQ'

  pod 'mob_sharesdk/ShareSDKPlatforms/SinaWeibo'

  pod 'mob_sharesdk/ShareSDKPlatforms/WeChat'

注意,SDK有很多,需要用那个平台在导入那个平台,没必要导入无用的平台。

2.在.pch文件中导入SDK头文件

#import <ShareSDK/ShareSDK.h>

3.在AppDelegate文件中注册SDK

    [ShareSDK registPlatforms:^(SSDKRegister *platformsRegister) {

        //新浪

        [platformsRegister setupSinaWeiboWithAppkey:kSinaAppKey appSecret:kSinaAppSecret redirectUrl:kSinaRedirectUrl];

         //QQ

        [platformsRegister setupQQWithAppId:kQQAppID appkey:kQQAppKey];

        //微信

        [platformsRegister setupWeChatWithAppId:kWeChatAppID appSecret:kWeChatAppSecret];        

    }];

4.配置URL Schemes见上面微信

5.登录代码及回调

[ShareSDK authorize:SSDKPlatformTypeWechat settings:nil onStateChanged:^(SSDKResponseState state, SSDKUser *user, NSError *error) {

        switch (state) {

            case SSDKResponseStateSuccess:

              user是登录返回的信息

                break;

            case SSDKResponseStateFail:

            {

                //失败

                [self showAlert:@"授权失败" type:ENAlertType_Tost];

                break;

            }

            case SSDKResponseStateCancel:

                //用户取消授权

                [self showAlert:@"已取消" type:ENAlertType_Tost];

                break;

                

            default:

                break;

        }

    }];

SSDKPlatformType是确定登录平台的参数,传入需要登录的三方平台即可,微信、qq、新浪

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值