iOS--通过MOB平台实现第三方登录与分享
适合刚开始接触第三方登录与分享的IOS小白!!
这两天看了一下有关IOS第三方登录与分享的一些知识,发现在QQ开放平台与微信开放平台实现这些功能很繁琐,不容易实现,在导师的推荐下,找到了这样一个平台
http://mob.com MOB云平台,通过这一个平台就可以实现大部分的第三方登录与分享,比如常见的QQ,微信,新浪微博等等.
废话不多说,开始吧!先说第三方分享吧!
一 .第三方分享
1.获取AppKey
在Mob的官网注册应用得到appkey,请点击链接看里面的操作步骤。
2.下载SDK
具体参照Mob官网.
3.集成
1.将下载好的SDK导入你的项目

2.添加依赖库(每个平台所需库不一样,这里是新浪微博与QQ,微信所需的库)

3.设置ShareSDK的Appkey并初始化对应的第三方社交平台 打开*AppDelegate.m(*代表你的工程名字)导入头文件

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
/**
* 设置ShareSDK的appKey
* 在将生成的AppKey传入到此方法中。
* 方法中的第二个第三个参数为需要连接社交平台SDK时触发,
* 在此事件中写入连接代码。第四个参数则为配置本地社交平台时触发,根据返回的平台类型来配置平台信息。
* 如果您使用的时服务端托管平台信息时,第二、四项参数可以传入nil,第三项参数则根据服务端托管平台来决定要连接的社交SDK。
*/
[ShareSDK registerApp:@"1c72a06f47e6c"
activePlatforms:@[@(SSDKPlatformTypeSinaWeibo),
@(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 SSDKPlatformTypeWechat:
[appInfo SSDKSetupWeChatByAppId:@"wx4868b35061f87885"
appSecret:@"64020361b8ec4c99936c0e3999a9f249"];
break;
case SSDKPlatformTypeQQ:
[appInfo SSDKSetupQQByAppId:@""
appKey:@"aed9b0303e3ed1e27bae87c33761161d"
authType:SSDKAuthTypeBoth];
break;
case SSDKPlatformTypeSinaWeibo:
//设置新浪微博应用信息,其中authType设置为使用SSO+Web形式授权
[appInfo SSDKSetupSinaWeiboByAppKey:@""
appSecret:@"38a4f8204cc784f81f9f0daaf31e02e3"
redirectUri:@"http://www.sharesdk.cn"
authType:SSDKAuthTypeBoth];
break;
default:
break;
}
}];
return YES;
}
4.添加实现代码 打开需要集成分享功能的视图源码
- (IBAction)actionBtnShare:(id)sender {
NSLog(@"点击了分享");
//1、创建分享参数
NSArray* imageArray = @[[UIImage imageNamed:@"shareImg"]];
//(注意:图片必须要在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];
//有的平台要客户端分享需要加此方法,例如微博
[shareParams SSDKEnableUseClientShare];
//2、分享(可以弹出我们的分享菜单和编辑界面)
/**
* 显示分享菜单
*
* view 要显示菜单的视图, iPad版中此参数作为弹出菜单的参照视图
* items 菜单项,如果传入nil,则显示已集成的平台列表
* shareParams 分享内容参数
* shareStateChangedHandler 分享状态变更事件
*
* 分享菜单控制器
*/
SSUIShareActionSheetController *sheet = [ShareSDK showShareActionSheet:nil
items:nil
shareParams:shareParams
onShareStateChanged:^(SSDKResponseState state, SSDKPlatformType platformType, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error, BOOL end) {
switch (state) {
case SSDKResponseStateSuccess:
{
NSLog(@"分享成功");
break;
}
case SSDKResponseStateFail:
{
NSLog(@"分享失败");
break;
}
default:
break;
}
}
];
//默认都是跳转到APP的编辑页面去编辑的
//加了这个方法之后可以不跳分享编辑界面,直接点击分享菜单里的选项,直接分享
//[sheet.directSharePlatforms addObject:@(SSDKPlatformTypeSinaWeibo)];
//默认微信,QQ,QQ空间都是直接跳客户端分享,加了这个方法之后,可以跳分享编辑界面分享
//[sheet.directSharePlatforms removeObject:@(SSDKPlatformTypeWechat)];
}
}
代码到这里就结束了,看一下最终效果:

4.注意事项:
1.微信,QQ这些第三方平台要实现分享必须添加各自真实的URL Types(图片里面的是测试KEY,可以使用)

我这里只是简略的配了下图,具体的见MobIOS集成手册 http://wiki.mob.com/ios简洁版快速集成/
2.plist 文件的配置

添加白名单:

这里的白名单仅仅是新浪微博与QQ,微信的数据,其他平台的数据见Mob集成注意手册.
3.新浪微博SDK需要在项目Build Settings中的Other Linker Flags添加"-ObjC"
4.如果出现的分享页面不是中文,这样设置:


二.第三方登录
如果你已经实现了第三方分享,那么实现第三方登录将十分简单
其他配置一样,只是实现的代码需要修改

//QQ 登录
- (IBAction)actionBtnLogin:(id)sender {
NSLog(@"点击了登录"); //QQ登录
[ShareSDK getUserInfo:SSDKPlatformTypeQQ
onStateChanged:^(SSDKResponseState state, SSDKUser *user, NSError *error)
{
if (state == SSDKResponseStateSuccess)
{ NSLog(@"uidQQ=%@",user.uid);
NSLog(@"credentialQQ=%@",user.credential);
NSLog(@"tokenQQ=%@",user.credential.token);
NSLog(@"nicknameQQ=%@",user.nickname);
_showText.text = [NSString stringWithFormat:@"欢迎您,%@",user.nickname];
} else
{
NSLog(@"%@",error);
} }]; }
//微信登录
//微信登录
- (IBAction)actionWeixinLogin:(id)sender {
//QQ登录
[ShareSDK getUserInfo:SSDKPlatformTypeWechat
onStateChanged:^(SSDKResponseState state, SSDKUser *user, NSError *error)
{
if (state == SSDKResponseStateSuccess)
{ NSLog(@"uidWechat=%@",user.uid);
NSLog(@"credentialWechat=%@",user.credential);
NSLog(@"tokenWechat=%@",user.credential.token);
NSLog(@"nicknameWechat=%@",user.nickname);
_showText.text = [NSString stringWithFormat:@"欢迎您,%@",user.nickname];
} else
{
NSLog(@"%@",error);
} }]; }
效果图:

2019.5.17 更新:代码已经很老了,可能有的代码会报错,最好去MOB官网看看如何集成!
iOS--通过MOB平台实现第三方登录与分享的更多相关文章
- iOS开发---集成ShareSDK实现第三方登录、分享、关注等功能。
(1)官方下载ShareSDK IOS 2.9.6,地址:http://sharesdk.mob.com/Download (2)根据实际情况,引入相关的库,参考官方文档. (3)在项目的AppDel ...
- IOS项目集成ShareSDK实现第三方登录、分享、关注等功能。
(1)官方下载ShareSDK iOS 2.8.8,地址:http://sharesdk.cn/ (2)根据实际情况,引入相关的库,参考官方文档. (3)在项目的AppDelegate中一般情况下有三 ...
- IOS项目集成ShareSDK实现第三方登录、分享、关注等功能(备用)
(1)官方下载ShareSDK iOS 2.8.8,地址:http://sharesdk.cn/ (2)根据实际情况,引入相关的库,参考官方文档. (3)在项目的AppDelegate中一般情况下有三 ...
- IOS项目集成ShareSDK实现第三方登录、分享、关注等功能
(1)官方下载ShareSDK iOS 2.8.8,地址:http://sharesdk.cn/ (2)根据实际情况,引入相关的库,参考官方文档. (3)在项目的AppDelegate中一般情况下有三 ...
- iOS:IOS项目集成ShareSDK实现第三方登录、分享、关注等功能。
原文链接:http://blog.csdn.net/daleiwang/article/details/34081231 (3)在项目的AppDelegate中一般情况下有三个操作,第一是注册Shar ...
- Android记录16-友盟第三方登录、分享实现
Android开发记录16-友盟第三方登录.分享实现 2014年博客之星,投票地址username=wwj_748#content" style="font-family: Kai ...
- android使用友盟实现第三方登录、分享以及微信回调无反应问题解决办法
这里介绍微信和新浪登录.微信登录和新浪登录都需要申请第三方账号.可以参考官方文档http://dev.umeng.com/social/android/operation#2还是很清晰的. 新浪微博开 ...
- iOS YSAuth 第三方登录及分享
概述 在很多时候,我们使用的都是第三方插件来处理登录与分享,比如使用友盟.但要是我们需要自己写一套自己的登录.分享.支付的时候,就可以使用YSAuth这个类库. github:https://gith ...
- 腾讯开放平台web第三方登录获取信息类(包含签名)
不清楚具体参数的可以先看下第三方登录的文档: class QQ { //$appid 你的appid //$openid 获取到的唯一的用户openid //$openkey 获取到的openkey ...
随机推荐
- php单例模式与工厂模式
单例模式:单例模式又称为职责模式,它用来在程序中创建一个单一功能的访问点,通俗地说就是实例化出来的对象是唯一的. 所有的单例模式至少拥有以下三种公共元素:1. 它们必须拥有一个构造函数,并且必须被标记 ...
- Angular2组件与指令的小实践——实现一个图片轮播组件
如果说模块系统是Angular2的灵魂,那其组件体系就是其躯体,在模块的支持下渲染出所有用户直接看得见的东西,一个项目最表层的东西就是组件呈现的视图.而除了直接看的见的躯体之外,一个完整的" ...
- HNOI2015 Day 1
HNOI2015的题还是非常漂亮的,几道题都有很大的借鉴意义,都有很强的思考性 T1亚瑟王(概率论) 描述:http://www.lydsy.com/JudgeOnline/problem.php?i ...
- 3553: [Shoi2014]三叉神经树(树链剖分)
这道题特别恶心,首先我们可以发现更改的就是出现连续的一或二,那么就用线段树+树链剖分找到这个范围 想到是不难想,就是打起来恶心罢了= = CODE: #include<cstdio> #i ...
- 我的JS 中级学习篇
在codefordream上进入中级学习后,感觉立马从js的基础学习往前跳了好远,上面的东西好像都是第一次看到一样.这时候才发现,说来也曾接触过js,但是这时候才发现对js的认识就停在知道两点:js中 ...
- php与微信基础的学习
我们要搞的是用php来与微信进行信息交互,现在是一个学习过程...结合慕课网渔夫老师的讲解. 微信公众号的申请具体可百度,太简单不予说明,微信本身功能也挺多,也有相关第三方平台,然而我们学习编程--具 ...
- Gulp实现css、js、图片的压缩以及css、js文件的MD5命名
目前做代码压缩合并的工具有很多,诸如gulp,webpack,grunt等等,可以说这些项目构建工具的功能非常之强大:图片压缩.图片转base64.css和js的压缩以及合并,文件的md5重命名 -- ...
- Cocoapods在OS X Yosemite上升级时 报错的解决方法
原始地址:http://www.cocoachina.com/ios/20141018/9958.html 今天升级了Mac OS X 10.10-Yosemite以后运行pod install遇到下 ...
- dns服务搭建
DNS 是域名系统 (Domain Name System) 的缩写,它是由解析器和域名服务器组成的. 域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器 ...
- 百度编辑器 UEditor第一次加载后台数据失败
给编辑器赋值的代码: var ue = UE.getEditor('content'); ue.ready(function (){ ue.setContent(data.data.cont ...