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

  • Post author:
  • Post category:其他



本文会介绍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、新浪



版权声明:本文为qq_30356665原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。