- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { BOOL result = [ALBBService(ALBBOpenAccountSSOService) handleOpenUrl:url]; if (!result) { //用户其他操作 return NO; } return result; }
添加AlibabaAuthExt.framework和AlibabaAuthSDK.framework的依赖
在TARGETS->Info->URL Types下添加URL Schemes,格式是tbopen+appkey
info.plist增加LSApplicationQueriesSchemes,如下图所示
获取友盟apkey。云账号三方登录模块是在友盟share SDK基础做了一层集成,如果你尚未在友盟注册账号,需要先注册,注册之后登录你的账号,点击添加新应用,完成新应用填写之后,将进入应用管理页面。在该页面就能得到Appkey。目前云账号接入的友盟SDK版本是6.0
申请第三方平台APPID。目前云账号支持淘宝,微博,微信,QQ登录,除了淘宝登录,其他三种平台都需要申请APPID,申请平台APPID请直接参考友盟文档申请第三方账号,
配置scheme。在你的工程设置项,targets 一栏下,选中自己的 target,在 Info->URL Types 中添加 URL Schemes。如果使用的是Xcode3或更低版本,则需要在plist文件中添加。获取各个平台appkey或者appid的方法可以参考分享详细文档绑定各个平台部分,各个平台的url scheme格式如下表:
平台 |
scheme设置格式 |
---|---|
新浪微博 | “wb”+新浪appkey,例如“wb126663232” |
微信 | 微信应用appId,例如“wxd9a39c7122aa6516” |
需要添加两个URL schemes 1. “QQ”+腾讯QQ互联应用appId转换成十六进制(不足8位前面补0),例如“QQ05FC5B14”,注意大写,生成十六进制方法:点击链接,2.“tencent“+腾讯QQ互联应用Id,例如“tencent100424468" |
初始化友盟
#import <UMSocialCore/UMSocialCore.h> -(void)initUmeng{ //打开日志 [[UMSocialManager defaultManager] openLog:YES]; //设置友盟appkey [[UMSocialManager defaultManager] setUmSocialAppkey:@"umappkey"]; //微信(如果接入) [ALBBService(ALBBOpenAccountSSOService) setPlatform:OAAuthPlatformType_WechatSession appKey:@"appkey" appSecret:@"appsecret" redirectURL:@"url"]; //QQ(如果接入) [ALBBService(ALBBOpenAccountSSOService) setPlatform:OAAuthPlatformType_QQ appKey:@"appkey" appSecret:@"appsecret" redirectURL:@"url"]; //微博(如果接入) [ALBBService(ALBBOpenAccountSSOService) setPlatform:OAAuthPlatformType_Sina appKey:@"appkey" appSecret:@"appsecret" redirectURL:@"url"]; }
设置授权回调处理的delegate(ALBBOpenAccountSSODelegate)
[ALBBService(ALBBOpenAccountUIService) setOpenAccountSSODelegate:self];
实现代理方法
- (void) openAccountSSOLoginError:(NSError *)error Session:(ALBBOpenAccountSession *)currentSession { if(!error) { [MyAlertView alert:[NSString stringWithFormat:@"登录成功 \n token:%@ \n user:%@", [currentSession getAuthToken], [currentSession getUser]]]; } else { NSLog(@"%@",error); } }
接入方可以不使用loginViewController提供的按钮进行三方授权登录,而是自建UI进行授权登录
调用如下方法(ALBBOpenAccountSSO.h),其中delegate需要接入方自行维护,openaccount framwork不进行强引用
- (void)oauthWithPlatForm:(OAAuthPlatformType)sType presentingVC:(UIViewController *)presentingController delegate:(id<SSODelegate>)delegate;
实现代理方法(ALBBOpenAccountSSO.h/SSODelegate)
- (void)openAccountOAuthError:(NSError *)error Session:(ALBBOpenAccountSession *)session;
当用户登录后,可以手动绑定第三方账号体系
调用如下方法(ALBBOpenAccountSSO.h),其中delegate需要接入方自行维护,openaccount framwork不进行强引用。此方法调用必须有登录态,否则error code会返回555
- (void)oaBindWithPlatForm:(OAAuthPlatformType)sType presentingVC:(UIViewController *)presentingController delegate:(id<SSODelegate>)delegate;
实现代理方法(ALBBOpenAccountSSO.h/SSODelegate),其中ALBBOpenAccountSSOLink是第三方账号返回的信息
- (void)openAccountBindError:(NSError *)error Session:(ALBBOpenAccountSession *)session ThirdInfo:(ALBBOpenAccountSSOLink *)link;
- (void)getThirdBindInfoWithCallback:(void (^)(NSArray<ALBBOpenAccountSSOLink *> *accountLinks,NSError *error))callback;