第一步注册获取AppKey,就是所谓的唯一标识
注册的步骤:官网注册应用得到appkey,请点击链接看里面的操作步骤。
第二步下载SDK:
获取ShareSDK-iOS v3.x:下载地址
第三步集成SDK
在Build Phases中的Link Binary With Libraries中添加对应的framework
如果添加时候找不到,那么就需要点击add other按钮进行添加
{
进入时候会出现一个finder的界面,然后点击command+shift+G就见到上边一一串地址
然后把这串地址改为/usr/lib就可以在里面见到你需要的特殊framework,然后添加
}
必须添加的依赖库如下(Xcode 7 下 *.dylib库后缀名更改为*.tbd):
- libicucore.dylib
- libz.dylib
- libstdc++.dylib
- JavaScriptCore.framework
以下依赖库根据社交平台添加:
新浪微博SDK依赖库
- ImageIO.framework
- libsqlite3.dylib
QQ好友和QQ空间SDK依赖库
- libsqlite3.dylib
微信SDK依赖库
- libsqlite3.dylib
短信和邮件需要依赖库
- MessageUI.framework
第四步:
因为iOS9苹果需要将http要改为https的,因为苹果想应用更加安全
所以我们需要在Info.plist中添加
{
App Transport Security Settings类型为字典
然后再在这个字典中添加Allow Arbitrary Loads类型为Boolean 把Value改为YES
然后就可以咯
}
然后再次运行时候就不会报错咯
OK现在我们来实现登陆:
第一、我们先告诉shares平台我们的appkey、想要跳转的平台、告诉想要跳转平台你的软件在这个想跳转平台中的appid和appkey和授权方式
这样我们就完成咯一大步骤授权:
第二、我们需要匹配URL Types
举例QQ:QQ+你QQ号码16进制, tencent+你的QQ号码
第三、
配置白名单:
各平台OpenURL白名单说明 |
|||
新浪微博 |
|
||
腾讯微博 |
|
||
豆瓣 |
|
||
开心网 |
|
||
微信 |
|
||
易信 |
|
||
支付宝 |
|
||
|
|
||
QZONE |
[注:若同时使用QQ和QZONE,则直接添加本格即可] |
||
Google+ |
|
||
人人网 |
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
Line |
|
||
KakaoTalk |
|
||
KaokaoStory |
|
||
|
|
||
Tumblr |
|
||
非平台类,如短信,复制,邮件等 |
|
这样就可以是实现你想要的效果咯
以下就是第三方登陆的代码与自己的实现
registerApp:你在平台上的appkey,平台会通过这个key辨别你是否可以授权
activePlatforms:告诉平台你要跳转到那个界面 例如:SSDKPlatformTypeQQ跳到QQ授权
platformType:你要告诉QQ平台你这个软件是否可以在QQ中授权,然后QQ就是通过SSDKSetupQQByAppId:唯一标识去查看是否可以授权
authType:授权状态
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[ShareSDK registerApp:@“c5”
activePlatforms:@[@(SSDKPlatformTypeQQ),@(SSDKPlatformTypeWechat),@(SSDKPlatformTypeSinaWeibo)]
onImport:^(SSDKPlatformType platformType)
{
switch (platformType)
{
case SSDKPlatformTypeQQ:
[ShareSDKConnector connectQQ:[QQApiInterface class] tencentOAuthClass:[TencentOAuth class]];
break;
case SSDKPlatformTypeWechat:
[ShareSDKConnector connectWeChat:[WXApi class] delegate:self];
break;
case SSDKPlatformTypeSinaWeibo:
[ShareSDKConnector connectWeibo:[WeiboSDK class]];
break;
default:
break;
}
}
onConfiguration:^(SSDKPlatformType platformType, NSMutableDictionary *appInfo)
{
switch (platformType)
{
case SSDKPlatformTypeQQ:
[appInfo SSDKSetupQQByAppId:@"1"
appKey:@"8TbGd1"
authType:SSDKAuthTypeBoth];
break;
case SSDKPlatformTypeWechat:
break;
case SSDKPlatformTypeWechat:
[appInfo SSDKSetupWeChatByAppId:@"wxfd343f"
appSecret:@"d4647af5443d"];
break;
case SSDKPlatformTypeSinaWeibo:
case SSDKPlatformTypeSinaWeibo:
[appInfo SSDKSetupSinaWeiboByAppKey:@"2596272"
appSecret:@"366d6b89e51bfa13"
authType:SSDKAuthTypeBoth];
break;
default:
break;
}
break;
default:
break;
}
}];
return YES;
}
点击的操作
三个登陆的点击事件处理是一样的,传的平台不一样就可以咯getUserInfo:SSDKPlatformTypeSinaWeibo这个
- (void)weiBoButtonClick
{
[ShareSDK getUserInfo:SSDKPlatformTypeSinaWeibo
onStateChanged:^(SSDKResponseState state, SSDKUser *user, NSError *error)
{
if (state == SSDKResponseStateSuccess)// 成功就会获取到平台的个人资料
{
NSLog(@"uid=%@",user.uid);
NSLog(@"%@",user.credential);
NSLog(@"token=%@",user.credential.token);
NSLog(@"nickname=%@",user.nickname);
YiQiGanDianShaViewController *ganDianShaViewController = [[YiQiGanDianShaViewController alloc] init];
[self presentViewController:ganDianShaViewController animated:YES completion:nil];
}
else
{
NSLog(@"%@",error);
}
}];
[ShareSDK getUserInfo:SSDKPlatformTypeSinaWeibo
onStateChanged:^(SSDKResponseState state, SSDKUser *user, NSError *error)
{
if (state == SSDKResponseStateSuccess)// 成功就会获取到平台的个人资料
{
NSLog(@"uid=%@",user.uid);
NSLog(@"%@",user.credential);
NSLog(@"token=%@",user.credential.token);
NSLog(@"nickname=%@",user.nickname);
YiQiGanDianShaViewController *ganDianShaViewController = [[YiQiGanDianShaViewController alloc] init];
[self presentViewController:ganDianShaViewController animated:YES completion:nil];
}
else
{
NSLog(@"%@",error);
}
}];
}