新浪微博iOS平台SSO授权认证原理分析

众所周知,新浪微博的开放平台采用Oauth认证技术来实现第三方应用对微博数据的访问。Oauth认证的好处是应用方并不需要保存用户的帐户与密码,只需要保存经过用户授权的KeySecret组合即可对于平台上的所有接口资源进行访问,在传输过程中也可以避免被不怀好意的人通过截包分析的方式获取到用户的帐号与密码。APP在授权时会通过WebView 加载新浪微博的授权页面,用户进入这个页面登录新浪微博,进行Token的授权。之后App就可以利用token获取用户相关数据,包括timeline,user info,post status等。注:以下所有的文字都是基于ios平台这个前提。

可能大部分用户都觉得在 授权页面登陆新浪微博时输入登陆邮箱和密码特别不方便,经常需要数字字母等切换,还容易出错。不过 SSO 授权的出现让这些复杂的事情也随之烟消云散(前提是你的移动设备安装了新浪微博官方客户端)。那什么是 SSO 授权呢?简单的说就是 接入新浪微博的第三方 Android iOS 应用可通过新浪微博官方客户端快速完成 OAuth2.0 授权。下面借用新浪官方图片来解释一下如何进行SSO授权。
新浪微博iOS平台SSO授权认证使用 - album163ios - 网易相册ios组
 
从上图中可以发现,用户只需要通过简单的点击就可以轻松完成授权,终于可以摆脱令人讨厌的键盘输入,大大增强了操作的简便性。到底是什么魔法让整个授权过程变的如此简单呢?下面就一一为你解开其中的奥秘。
你可以发现,SSO授权是通过新浪微博客户端完成的,第三方应用是如何访问新浪客户端的数据呢? iOS  的设计思路是原则上禁止不同的应用程序之间相互访问彼此的数据(sandbox模型), 从安全的角度来说不失为一个有效的策略。不过凡事总有例外,所以乔老爷子还是为程序间通讯开放了接口——URL Scheme。

URL Scheme
URL Scheme 是类似 http:// ftp:// afp:// 这样的东西,你可以在 iOS Mac 中注册任何类型的 URL Scheme 。当用户在浏览器中访问你的自定义 URL Scheme 的链接的时候,操作系统就会打开你的程序,响应这个请求。 这个特性通常用于在应用程序中启动另外一个应用程序来打开一种特定格式的数据。 iOS   预定义了如下几种 URL Scheme :
1 sms:1-408-555-1212
2 mailto:frank@wwdcdemo.example.com
3 tel:1-408-555-5555
4 map youtube itunes
例如在App中通过下面代码就能调用系统短信程序,直接于该号码进行发送短信

 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms:1-408-555-1212"]];

注册url scheme
你也可以自定义 URL Scheme, 点击工程target,进入info选项,找到URL Types栏目,点击“+”按钮添加url type。如下图所示:
新浪微博iOS平台SSO授权认证使用 - album163ios - 网易相册ios组

需要注意的是:在多个应用程序注册了同一种URL Scheme 的时候,iOS 系统程序的优先级高于第三方开发程序。但是如果一种URL Scheme 的注册应用程序都是第三方开发的,那么这些程序的优先级关系是不确定的。所以在注册scheme时尽量选择特殊的名字,以免和别的应用冲突。

发送 URL Scheme


NSURL *myURL = [NSURL URLWithString:@"URL Scheme"];


[[UIApplication sharedApplication ] openURL:myURL];


接收 URL Scheme

URL Schemes 由系统发送给 application delegate , delegate中的如下代理函数负责接收url scheme:

  • - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url;  
 4.1 及之前版本的 iOS 中实现。
  • - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation; 
 4.2 及之后版本的 iOS 中实现。


有了上面这些基础知识再来理解新浪微博SSO授权就简单明了了,大致实现过程可以猜测为:第一步,第三方应用通过新浪微博事先公开的自定义URL Scheme来调用新浪微博app,将第三方应用的appkey,回调url scheme等相关参数传过去;第二步,新浪微博app将自身管理的已登陆的账号信息展示给用户;第三步,用户选择指定账户后由新浪微博app负责和新浪后端服务器进行验证授权;第四步,新浪微博app通过之前传过去的回调url scheme来调用第三方应用,将获得的授权token传给第三方应用;第五步,第三方应用获得授权token,使用token进行各项已授权的操作。
具体如何使用使用官方提供的sdk包,可以去 官方主页下载sdk。压缩包内有使用文档和demo,使用相当简单。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值