iOS 接入指南
1. 集成 SDK
(1)将下载的BaiduOAuthKit.framework文件添加到工程目录
(2)引入 BaiduOAuthKit.bundle 资源文件。选中工程目录,点击右键,选择【Add Files to “工程名” …】,选择 BaiduOAuthKit.framework/BaiduOAuthKit.bundle,单击 Add,将资源文件引入工程中;
(3)设置 Other Linker Flags。在工程 Build Settings 中,找到 Other Linker Flags,并添加 -ObjC
(4)设置工程回调URL Scheme,修改 info.plist 文件 URL types 项为自己的 sso 回调地址,”bd[你的应用程序的appid]”,例如:bd400086
(5)在“Info.plist”中将要使用的URL Schemes列为白名单
<key>LSApplicationQueriesSchemes</key>
<array>
<string>bdoa-bdbox</string>
<string>bdoa-mobimap</string>
<string>bdoa-tb</string>
<string>bdoa-netdisk</string>
<string>bdoa-baiduhaokan</string>
</array>
2. 初始化SDK
在 AppDelete 的 application:didFinishLaunchingWithOptions: 方法内或者首页 UIViewController 的 viewDidLoad 方法内初始化 OAuth SDK,确保应用生命周期内初始化一次即可。调用以下方法进行初始化:
[BaiduOAuth registerApikey:YOUR_APIKEY appId:YOUR_APPID scope:YOUR_SCOPE redirectURI:YOUR_REDIRECTURI delegate:YOUR_DELEGATE];
参数 | 作用 |
---|---|
YOUR_APIKEY | 注册申请后得到 |
YOUR_APPID | 注册申请后得到 |
YOUR_SCOPE | 第三方应用需要申请的权限列表,使用, 分割 |
YOUR_REDIRECTURI | 应用回调页,在进行 Oauth2.0 登录认证时所用。 |
YOUR_DELEGATE | 当授权完成后,用来接收回调的对象。 |
3. 处理SSO授权回跳
重写AppDelegate 的handleOpenURL和openURL方法
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
return [BaiduOAuth handleOpenURL:url];
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [BaiduOAuth handleOpenURL:url];
}
4. OAuth授权认证
调用[BaiduOAuth sendRequestWithConfig:]
方法调起授权认证。 oauthType默认为BDOAuthTypeDefault,调用后会检测是否安装百度系app。
- 若已安装,跳转到百度系APP。如果当前百度系APP没有登录帐号,则进入登录界面;如果当前百度系APP已经有帐号,则进入授权页面。当授权完成后会回调给第三方应用程序。
- 若未安装,在第三方APP内打开oauth授权登录页面,登录、授权完成后会回调给第三方应用程序。
若oauthType设置为BDOAuthTypeSSO,调用后会检测是否安装百度系app。
- 若已安装,跳转到百度系APP。如果当前百度系APP没有登录帐号,则进入登录界面;如果当前百度系APP已经有帐号,则进入授权页面。当授权完成后会回调给第三方应用程序。
- 若未安装,则回调失败。
若oauthType设置为BDOAuthTypeWeb,在第三方APP内打开oauth授权登录页面,登录、授权完成后会回调给第三方应用程序。
第三方实现BaiduOAuthDelegate
监听此次请求的回调。
- (IBAction)btnClick:(id)sender {
BDOAuthConfig *config = [[BDOAuthConfig alloc] init];
config.oauthType = BDOAuthTypeDefault;
config.state = @"your_state";
[BaiduOAuth sendRequestWithConfig:config];
}
#pragma mark - BaiduOAuthDelegate
- (void)didReceiveBaiduResponse:(BDOAuthResponse *)response {
NSLog(@"OAuth成功回调:%@", response);
}
- (void)didReceiveBaiduError:(NSError *)error {
NSLog(@"OAuth失败回调:%@", error);
}
回调的参数有
/**
code 开发者拿到code后,通过服务端换取token,code过期时间10分钟
*/
@property (nonatomic, copy) NSString *code;
/**
调起授权前传入的state参数
*/
@property (nonatomic, copy) NSString *state;
code 换取 access_token 参考 code获取授权access_token
5. 错误码列表
错误码 | 含义 |
---|---|
0 | 成功 |
-201 | 其他错误 |
-202 | 参数错误 |
-203 | 网络异常 |
-204 | 服务返回的异常 |
-205 | 用户取消 |
-206 | SDK未初始化、初始化失败 |
-207 | 没有安装百度系app |
-208 | 百度系app版本号太低 |