使用ShareSDK进行第三方(登录,分享)
2016-03-13 22:21
357 查看
最近项目需要做第三方登录和分享,我刚开始接触的时候花了 一些时间才搞清楚 ,我使用的是ShareSDK
我把它整理下来,希望能帮助他人,如果写的不好,请见谅
1.去Mob官网注册一个帐号(注册步骤省略了)注册成功后添加应用 拿到对应
App Key和App Secret这很重要
2.注册成功后下载ShareSDK
想要进行那些登录和分享就勾哪个就行,全下载文件很大的
下载下来的SDK解压后
把它拉到工程里面
添加依赖库 (一定要添加)
3.上面的步骤做完了,下面上代码
设置ShareSDK的Appkey并初始化对应的第三方社交平台 打开AppDelegate.m(代表你的工程名字)导入头文件
#import <ShareSDK/ShareSDK.h> #import <ShareSDKConnector/ShareSDKConnector.h> //腾讯开放平台(对应QQ和QQ空间)SDK头文件 #import <TencentOpenAPI/TencentOAuth.h> #import <TencentOpenAPI/QQApiInterface.h> //微信SDK头文件 #import "WXApi.h" //新浪微博SDK头文件 #import "WeiboSDK.h"
在- (BOOL)application: didFinishLaunchingWithOptions:方法中调用registerApp方法来初始化SDK并且初始化第三方平台
// 我这里添加的是,微博,QQ(QQ空间),微信
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { /** * 设置ShareSDK的appKey,如果尚未在ShareSDK官网注册过App,请移步到http:mob.com/login 登录后台进行应用注册, * 在将生成的AppKey传入到此方法中。 * 方法中的第二个第三个参数为需要连接社交平台SDK时触发, * 在此事件中写入连接代码。第四个参数则为配置本地社交平台时触发,根据返回的平台类型来配置平台信息。 * 如果您使用的时服务端托管平台信息时,第二、四项参数可以传入nil,第三项参数则根据服务端托管平台来决定要连接的社交SDK。 */ [ShareSDK registerApp:@"ed92649b0ffc" activePlatforms:@[ @(SSDKPlatformTypeSinaWeibo), @(SSDKPlatformTypeMail), @(SSDKPlatformTypeSMS), @(SSDKPlatformTypeCopy), @(SSDKPlatformTypeWechat), @(SSDKPlatformTypeQQ)] onImport:^(SSDKPlatformType platformType) { switch (platformType) { case SSDKPlatformTypeWechat: [ShareSDKConnector connectWeChat:[WXApi class]]; break; case SSDKPlatformTypeQQ: [ShareSDKConnector connectQQ:[QQApiInterface class] tencentOAuthClass:[TencentOAuth class]]; break; case SSDKPlatformTypeSinaWeibo: [ShareSDKConnector connectWeibo:[WeiboSDK class]]; break; default: break; } } onConfiguration:^(SSDKPlatformType platformType, NSMutableDictionary *appInfo) { switch (platformType) { case SSDKPlatformTypeSinaWeibo: //设置新浪微博应用信息,其中authType设置为使用SSO+Web形式授权 [appInfo SSDKSetupSinaWeiboByAppKey:@"568898243" appSecret:@"38a4f8204cc784f81f9f0daaf31e02e3" redirectUri:@"http://www.sharesdk.cn" authType:SSDKAuthTypeBoth]; break; case SSDKPlatformTypeWechat: [appInfo SSDKSetupWeChatByAppId:@"wx4868b35061f87885" appSecret:@"64020361b8ec4c99936c0e3999a9f249"]; break; case SSDKPlatformTypeQQ: [appInfo SSDKSetupQQByAppId:@"100371282" appKey:@"aed9b0303e3ed1e27bae87c33761161d" authType:SSDKAuthTypeBoth]; break; case SSDKPlatformTypeRenren: [appInfo SSDKSetupRenRenByAppId:@"226427" appKey:@"fc5b8aed373c4c27a05b712acba0f8c3" secretKey:@"f29df781abdd4f49beca5a2194676ca4" authType:SSDKAuthTypeBoth]; break; case SSDKPlatformTypeGooglePlus: [appInfo SSDKSetupGooglePlusByClientID:@"232554794995.apps.googleusercontent.com" clientSecret:@"PEdFgtrMw97aCvf0joQj7EMk" redirectUri:@"http://localhost" authType:SSDKAuthTypeBoth]; break; default: break; } }]; return YES; }
4:添加实现代码 打开需要集成分享功能的视图源码,把如下代码复制并粘贴到你要分享的位置,例如到响应分享按钮的方法中。并且修改相应的参数即可。
- .需要在分享的试图中导入的头文件
#import <ShareSDK/ShareSDK.h> #import <ShareSDKUI/ShareSDK+SSUI.h>
-.调用构造分享参数接口和分享的接口
#pragma mark ---------分享---------- //这是分享按钮 - (void)fxAction:(UIButton *)sender { NSLog(@"分享"); //1、创建分享参数 // NSArray* imageArray = @[[UIImage imageNamed:@"nihao.png"]]; NSArray* imageArray = @[[UIImage imageWithContentsOfFile:path]]; //(注意:图片必须要在Xcode左边目录里面,名称必须要传正确,如果要分享网络图片,可以这样传iamge参数 images:@[@"http://mob.com/Assets/images/logo.png?v=20150320"]) if (imageArray) { NSMutableDictionary *shareParams = [NSMutableDictionary dictionary]; [shareParams SSDKSetupShareParamsByText:@"分享内容" images:imageArray url:[NSURL URLWithString:@"http://mob.com"] title:@"分享标题" type:SSDKContentTypeAuto]; //2、分享(可以弹出我们的分享菜单和编辑界面) [ShareSDK showShareActionSheet:nil //要显示菜单的视图, iPad版中此参数作为弹出菜单的参照视图,只有传这个才可以弹出我们的分享菜单,可以传分享的按钮对象或者自己创建小的view 对象,iPhone可以传nil不会影响 items:nil shareParams:shareParams onShareStateChanged:^(SSDKResponseState state, SSDKPlatformType platformType, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error, BOOL end) { switch (state) { case SSDKResponseStateSuccess: { UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"分享成功" message:nil delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil]; [alertView show]; break; } case SSDKResponseStateFail: { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"分享失败" message:[NSString stringWithFormat:@"%@",error] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; [alert show]; break; } default: break; } } ];} }
编译并运行后,点击分享按钮就成功发送到社交平台的话说明你已经基本集成成功了。
第三方登录差不多
- (void)qqAction:(UIButton *)sender { NSLog(@"QQ"); [SSEThirdPartyLoginHelper loginByPlatform:SSDKPlatformTypeQQ onUserSync:^(SSDKUser *user, SSEUserAssociateHandler associateHandler) { //在此回调中可以将社交平台用户信息与自身用户系统进行绑定,最后使用一个唯一用户标识来关联此用户信息。 //在此示例中没有跟用户系统关联,则使用一个社交用户对应一个系统用户的方式。将社交用户的uid作为关联ID传入associateHandler。 associateHandler (user.uid, user, user); NSLog(@"dd%@",user.rawData); NSLog(@"dd%@",user.credential); } onLoginResult:^(SSDKResponseState state, SSEBaseUser *user, NSError *error) { if (state == SSDKResponseStateSuccess) { } }]; }
最后的重点,iOS 9系统以后,限制了http协议的访问,此外应用需要在“Info.plist”中将要使用的URL Schemes列为白名单,才能进行第三方分享,登录。白名单设置
相关文章推荐
- 设计模式(一)
- Java集合源码学习笔记(三)LinkedList分析
- 代码生活得小记录
- Redis自定义动态字符串(sds)模块(一)
- python(5)–random模块及验证码
- python_string常用函数用法小结
- canvas绘图调用方法
- 侧拉菜单Android动画
- Codeforces Round #345 (Div. 2) D. Image Preview
- C++ 初识Windows消息
- leetcode:Longest Common Prefix 【Java】
- Git的常用命令
- CSS中的块级元素与行级元素
- 小白级小菜鸟的js基础总结(一)——基础语法
- JavaScript去重的方法
- java中数组常见的排序问题整理
- 在RHEL7上安装服务器端的图形化界面
- Xshell+WinSCP在Linux上安装jdk
- JVM栈
- MySQL5.6存储过程和函数