抖音的分享和授权(iOS)
准备工作
- 注册appkey ( 抖音开放平台 )
- 集成sharesdk( 下载地址 )
- Xcode配置:urlScheme为注册的appkey, 白名单:douyinsharesdk ,douyinopensdk
业务代码
初始化
#import[ShareSDK registPlatforms:^(SSDKRegister *platformsRegister) { //抖音 [platformsRegister setupDouyinByAppKey:@"app_key" appSecret:@"app_secret"]; }];
可以分享图片,相册图片,单个视频,多个视频
分享图片
// 通用参数设置----图片分享可以使用相册地址、沙盒路径、网络图片地址 NSString *imageURL = @"http://img.hb.aicdn.com/28a4962c297205e0868cdb45bb527e2bc5319f08f019-l7N1A3_fw658"; NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; [parameters SSDKSetupShareParamsByText:nil images:@[imageURL] url:nil title:nil type:SSDKContentTypeImage]; [ShareSDK share:SSDKPlatformTypeDouyin parameters:shareParams onStateChanged:^(SSDKResponseState state, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error) { if (state == SSDKResponseStateSuccess) { NSLog(@"成功!"); }else{ NSLog(@"%@",error); } }];
// 通用参数设置----视频分享可以使用相册地址、沙盒路径,不支持网络视频,如果使用网络视频请先下载放到沙盒目录下或相册里 NSString *videoPath = [[NSBundle mainBundle] pathForResource:@"cat" ofType:@"mp4"]; NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; [parameters SSDKSetupShareParamsByText:nil images:nil url:[NSURL URLWithString:videoPath] title:nil type:SSDKContentTypeVideo]; [ShareSDK share:SSDKPlatformTypeDouyin parameters:parameters onStateChanged:^(SSDKResponseState state, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error) { if (state == SSDKResponseStateSuccess) { NSLog(@"成功!"); }else{ NSLog(@"%@",error); } }];
// 平台定制----只能使用相册且使用相册标识localIdentifier __block NSMutableArray *assetLocalIds = [NSMutableArray array]; __weak typeof(self) weakSelf = self; [[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{ NSURL *url_1 = [[NSBundle mainBundle] URLForResource:@"cat" withExtension:@"mp4"]; NSURL *url_2 = [[NSBundle mainBundle] URLForResource:@"cat" withExtension:@"mp4"]; PHAssetChangeRequest *req_1 = [PHAssetChangeRequest creationRequestForAssetFromVideoAtFileURL:url_1]; NSString *localId_1 = req_1.placeholderForCreatedAsset.localIdentifier; [assetLocalIds addObject:localId_1]; PHAssetChangeRequest *req_2 = [PHAssetChangeRequest creationRequestForAssetFromVideoAtFileURL:url_2]; NSString *localId_2 = req_2.placeholderForCreatedAsset.localIdentifier; [assetLocalIds addObject:localId_2]; } completionHandler:^(BOOL success, NSError * _Nullable error) { if (success) { dispatch_async(dispatch_get_main_queue(), ^{ NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; [parameters SSDKSetupDouyinParamesByAssetLocalIds:assetLocalIds type:SSDKContentTypeVideo]; [ShareSDK share:SSDKPlatformTypeDouyin parameters:parameters onStateChanged:^(SSDKResponseState state, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error) { if (state == SSDKResponseStateSuccess) { NSLog(@"成功!"); }else{ NSLog(@"%@",error); } }]; }); } }];
[ShareSDK authorize:SSDKPlatformTypeDouyin settings:nil on StateChanged:^(SSDKResponseState state , SSDKUser * user , NSError *error) { if ( state == SSDKResponseStateSuccess) { NSLog(@ "%@" ,[ user .credential rawData]); NSLog(@ "%@" , user .rawData); } else { NSLog(@ "%@" ,error); } }];