接入流程
-
将SDK的framework导入到工程中
HSKit.framework - 配置工程
-
将申请的appId添加到URL Types中作为钉钉回调的scheme;URL Schemes填写申请的AppId。 iOS9及以后的系统需要将钉钉和分享SDK的scheme配置在Info.plist。LSApplicationQueriesSchemes列表中,scheme分别为 hsedu, hsedu-sso。
配置工程
-
注册应用并添加必要的URLHandler
image.png -
判断当前设备是否支持分享到钉钉
image.png
注意:在iOS9上需要将钉钉SDK相关的Scheme注册到Info.plist的LSApplicationQueriesSchemes名单中,否则会导致检测方法总是返回NO。
iOS平台应用授权登录接入代码示例
- Info.plist配置查询寰烁授权登录scheme权限。LSApplicationQueriesSchemes中添加hsedu, hsedu-sso。hsedu用于查询是否安装寰烁。hsedu-sso用于查询是否支持授权登录。注:iOS系统限制LSApplicationQueriesSchemes最多只能有50个,超出的话会有一部分不生效。
- Info.plist的URL Types中增加appId,用于寰烁App返回回调。
- app启动时注册appId。示例代码:
// 在app启动时注册appId
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// 注册AppId及AppSecret;
[HSOpenAPI registerApp:#该应用的appId# appSecret:#该应用的AppSecret#];
return YES;
}
- 发起授权登录。示例代码:
BOOL result = [HSOpenAPI openDingTalkForSSO];
if (result) {
NSLog(@"授权登录 发送成功.");
}
else {
NSLog(@"授权登录 发送失败.");
}
- 处理回调。示例代码:
// 在app delegate链接处理回调中调用寰烁回调链接处理方法
- (BOOL)application:(UIApplication *)application
openURL:(nonnull NSURL *)url
sourceApplication:(nullable NSString *)sourceApplication
annotation:(nonnull id)annotation
{
if ([HSOpenAPI handleOpenURL:url delegate:self]) {
return YES;
}
return NO;
}
// delegate实现回调处理方法 onResp:
- (void)onResp:(DTBaseResp *)resp
{
//授权登录回调参数为HSAuthorizeResp,accessCode为授权码
if ([resp isKindOfClass:[HSAuthorizeResp class]]) {
HSAuthorizeResp *authResp = (HSAuthorizeResp *)resp;
if (HSOpenAPISuccess == authResp.errorCode) {
NSString *accessCode = authResp.accessCode;
// 将授权码交给服务端做SSO
}
}