基于官方库内容(微信、新浪、腾讯、Facebook、Twitter、Google、小米等)的分享认证轮盘
#警告
1、新版 TencentSDK 不支持模拟器,因此只能使用真机调试
#使用
##使用配置
1、引入类库,必须引入 share 模块,其他可按自身 app 需要选择引入
(1)使用 pod 形式引入
全部引入
pod 'DDSocial'
单个引入
pod 'DDSocial/Share'
pod 'DDSocial/MI'
pod 'DDSocial/Wechat'
pod 'DDSocial/Tencent'
pod 'DDSocial/Sina'
pod 'DDSocial/Facebook'
pod 'DDSocial/Twitter'
pod 'DDSocial/Google'
pod 'DDSocial/Line'
pod 'DDSocial/Instagram'
(2)使用源文件需要配置类库的 Search Paths
必须依赖 DDSocial 目录下的模块 Core
Build Settings -> Search Paths 在两个地方添加 Framework Search Paths 和 Library Search Paths
2、在 AppDelegate.h 中实现如下方法
(1)引入头文件
#import "DDSocialShareHandler.h"
(2)在应用启动时注册第三方
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[[DDSocialShareHandler sharedInstance] registerPlatform:DDSSPlatformMI appKey:@"自己申请的key"redirectURL:@"申请时填写的URL"];
[[DDSocialShareHandler sharedInstance] registerPlatform:DDSSPlatformWeChat appKey:@"自己申请的key"];
[[DDSocialShareHandler sharedInstance] registerPlatform:DDSSPlatformSina appKey:@"自己申请的key"];
[[DDSocialShareHandler sharedInstance] registerPlatform:DDSSPlatformQQ appKey:@"自己申请的key"];
[[DDSocialShareHandler sharedInstance] registerPlatform:DDSSPlatformFacebook appKey:@"自己申请的key"];
[[DDSocialShareHandler sharedInstance] registerPlatform:DDSSPlatformTwitter appKey:@"自己申请的key" appSecret:@"对应的secret"];
[[DDSocialShareHandler sharedInstance] registerPlatform:DDSSPlatformGoogle];
[[DDSocialShareHandler sharedInstance] registerPlatform:DDSSPlatformLine];
[[DDSocialShareHandler sharedInstance] registerPlatform:DDSSPlatformInstagram];
return YES;
}
(3)实现唤起 app 回调
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
return [[DDSocialShareHandler sharedInstance] application:application handleOpenURL:url sourceApplication:nil annotation:nil];
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [[DDSocialShareHandler sharedInstance] application:application handleOpenURL:url sourceApplication:sourceApplication annotation:annotation];
}
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options{
return [[DDSocialShareHandler sharedInstance] application:app openURL:url options:options];
}
##分享
2、调用方式
(1)实现分享的 protocol
DDSocialShareTextProtocol//纯文本分享需要实现该协议
DDSocialShareImageProtocol//图片分享需要实现该协议
DDSocialShareWebPageProtocol//web内容分享需要实现该协议
(2)分享代码
[[DDSocialShareHandler sharedInstance] shareWithPlatform:DDSSPlatformWeChat controller:self shareScene:DDSSSceneWXSession contentType:DDSSContentTypeImage protocol:self handler:^(DDSSPlatform platform, DDSSScene scene, DDSSShareState state, NSError *error) {
switch (state) {
case DDSSShareStateBegan: {
NSLog(@"开始分享");
break;
}
case DDSSShareStateSuccess: {
NSLog(@"分享成功");
break;
}
case DDSSShareStateFail: {
NSLog(@"分享失败:%@",error);
break;
}
case DDSSShareStateCancel: {
NSLog(@"取消分享");
break;
}
}
}];
##授权
[[DDSocialShareHandler sharedInstance] authWithPlatform:DDSSPlatformWeChat authMode:DDSSAuthModeCode controller:self handler:^(DDSSPlatform platform, DDSSAuthState state, DDAuthItem *authItem, NSError *error) {
switch (state) {
case DDSSAuthStateBegan: {
NSLog(@"开始授权");
break;
}
case DDSSAuthStateSuccess: {
NSLog(@"授权成功:%@",authItem);
break;
}
case DDSSAuthStateFail: {
NSLog(@"授权失败Error:%@",error);
break;
}
case DDSSAuthStateCancel: {
NSLog(@"授权取消");
break;
}
}
}];
#各个平台配置
###小米开放平台(http://dev.xiaomi.com/index)
1、首先在小米开放平台申请 appkey 并配置好 redirectURL
2、然后在 Xcode 中配置 info.plist
(1)添加 NSAppTransportSecurity 字段
3、示例代码
NSAppTransportSecurity
NSAllowsArbitraryLoads
NSExceptionDomains
open.account.xiaomi.com
NSExceptionAllowsInsecureHTTPLoads
www.miui.com
NSIncludesSubdomains
NSThirdPartyExceptionAllowsInsecureHTTPLoads
###微信开放平台(https://open.weixin.qq.com/)
1、首先在微信开放平台根据自身 app 的 bundleid 申请一个 appkey
2、然后在 Xcode 中配置 info.plist
(1)添加 CFBundleURLTypes
(2)添加 LSApplicationQueriesSchemes 白名单
3、示例代码
CFBundleURLTypes
CFBundleTypeRole
WeChat
CFBundleURLName
weixin
CFBundleURLSchemes
替换成自己的appkey
LSApplicationQueriesSchemes
weixin
weichat
###QQ互联(http://connect.qq.com/)
1、首先在 QQ 互联申请 appkey
2、然后在 Xcode 中配置 info.plist
(1)添加 CFBundleURLTypes
(2)添加 LSApplicationQueriesSchemes 白名单
3、示例代码
CFBundleURLTypes
CFBundleTypeRole
Tencent
CFBundleURLName
tencentopenapi
CFBundleURLSchemes
替换成自己的appkey
LSApplicationQueriesSchemes
mqqOpensdkSSoLogin
mqqopensdkapiV2
mqqopensdkapiV3
mqq
mqqapi
wtloginmqq2
mqzone
tim
timapiV1
###新浪微博开放平台(http://open.weibo.com/)
1、首先在新浪微博开放平台申请 appkey 可以选择配置自己的 redirectURL
2、然后在 Xcode 中配置 info.plist
(1)添加 CFBundleURLTypes
(2)添加 LSApplicationQueriesSchemes 白名单
3、示例代码
CFBundleURLTypes
CFBundleTypeRole
Sina
CFBundleURLName
com.weibo
CFBundleURLSchemes
替换成自己的appkey
LSApplicationQueriesSchemes
sinaweibosso
sinaweibohdsso
sinaweibo
weibosdk
weibosdk2.5
sinaweibohd
###Google 开放平台(https://developers.google.com/identity/sign-in/ios/)
1、首先在 Google 开放平台申请 appkey(详细步骤:https://developers.google.com/identity/sign-in/ios/start-integrating#before_you_begin)
2、然后在 Xcode 中配置 info.plist
(1)添加 CFBundleURLTypes
3、示例代码
CFBundleURLTypes
CFBundleTypeRole
Editor
CFBundleURLSchemes
google申请的appkey
CFBundleTypeRole
Editor
CFBundleURLSchemes
google申请的bundle
1、工程的 bundleid 必须和申请 Google 的完全一致
2、Google 需要添加自己生成的 info.plist 参见文档操作吧,参见连接:https://developers.google.com/identity/sign-in/ios/start-integrating#before_you_begin
###Facebook 开放平台(https://developers.facebook.com/) 详情查看(https://developers.facebook.com/docs/ios/getting-started)
1、首先在 Facebook 开放平台申请 appkey
2、然后在 Xcode 中配置 info.plist
(1)添加 CFBundleURLTypes
(2)添加 LSApplicationQueriesSchemes 白名单
(3)添加 FacebookAppID
(4)添加 FacebookDisplayName
3、示例代码
CFBundleURLTypes
CFBundleTypeRole
FB
CFBundleURLName
facebook
CFBundleURLSchemes
替换成自己的appkey
LSApplicationQueriesSchemes
fbshareextension
fbauth2
fb-messenger-api
fbapi
FacebookAppID
125938537776820
FacebookDisplayName
facebook授权页展示的名字
###Line 开放平台(https://developers.line.me/en/docs/line-login/ios/)
1、首先在 Line 开放平台申请 appkey(详细步骤:https://developers.line.me/en/docs/line-login/ios/integrate-line-login/)
2、然后在 Xcode 中配置 info.plist
(1)添加 CFBundleURLTypes
(2)添加 LSApplicationQueriesSchemes 白名单
(3)添加 LineSDKConfig
3、示例代码
CFBundleURLTypes
CFBundleTypeRole
Editor
CFBundleURLSchemes
line3rdp.$(PRODUCT_BUNDLE_IDENTIFIER)
LSApplicationQueriesSchemes
lineauth
line3rdp.$(PRODUCT_BUNDLE_IDENTIFIER)
line
LineSDKConfig
ChannelID
自己申请的LineID
###Instagram 开放平台(目前只支持图片分享,暂不支持授权)(//https://www.instagram.com/developer/mobile-sharing/iphone-hooks/)
1、在 Xcode 中配置 info.plist
(1)添加 LSApplicationQueriesSchemes 白名单
3、示例代码
LSApplicationQueriesSchemes
instagram