其实吧,Oauth可能大家也接触过,只是不知道有这个名字而已,说的通俗一点就是授权登陆,如果我有一个应用,想要吸引用户,但是注册是个麻烦的事情,很多用户可能欲望不大,但是像QQ这样拥有众多用户的服务商,就提供了一个授权登陆,让用户直接用QQ就可以登陆,其实说的直白点,我写的应用,啥事没干,就感觉让客户登陆了一下,而且我其实也拿不到用户的账号,只是获取了客户的信息,还有一个授权的token。对于我的应用来说token就相当于客户的账号信息(这里不是真实地,只是说腾讯给你的一个,腾讯哪里承认而且能够获取用户的信息的一窜信息)。
腾讯的平台已经封装的足够简单了,可能不知其所以然。
Oauth2.0平台一般流程如下:
应用----------------->弹出登陆页面----------------->用户点击----------------->程序向服务商请求未授权的令牌----------------->应用得到未授权的令牌并且跳转到登陆界面
----------------->用户登陆并把未授权的令牌给服务商----------------->服务商认证登陆,并把授权的令牌丢给应用,这个授权令牌应用可以保存,作为下一场登陆地依据。
这是一般的,当然QQ也是这么做的,但是有几部换了个样子:比如程序向服务商请求未授权的令牌就是我们申请的appid和appkey,在ios中应用之间的跳转很简单,如果A应用跳转的B应用,只要在B应用的
URL Schemes中写上,特定的字符,然后A应用openurl就可以了,同理B应用跳回A应用一样道理,但是,注意,调到A应用,会调用代理:
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
个人认为,跳转到qq的登陆页面,主要起作用的还是你申请的appkey,这个key在服务器注册了,一旦接收到这些key就定向到登陆界面,
_tencentOAuth = [[TencentOAuth alloc] initWithAppId:@"101025299" andDelegate:self];
[_tencentOAuth authorize:_permissions inSafari:NO];
这两句就很明显了首先传入的appid,作为一个校验和跳回app的url存在。
跳转回来就更简单了,你按照他的规则tencent+appid,注意哦,要是写错了,可是完全没办法回来的。
至于工程怎么实现,腾讯的demo已经讲的非常仔细,小白都能看懂,所以不做赘述,给上url:http://wiki.open.qq.com/wiki/website/IOS_SDK使用说明
建议大家尝试一下,比较简单,但是确实实用!