首先声明,这篇博客是写给本人自己看的,其目的只在于记录我在研究新浪微博账户登录以及OAuth的一些过程,仅作为本人的知识积累,而不在于知识传播。所以里面的很多细节实现不会赘述。如果你想从头到尾学习这个过程,可以继续百度其他文章,或者加新浪微博(@小刚WHM)咱们私下交流。
在一个开放的互联网时代,创业者最大的好处是不用辛辛苦苦从头到尾培养用户,在国外,只要你在网站或手机应用登录界面放上facebook或者twitter(你不知道这两个网站?那不能怪我,怪GFW)登录标志,你就立即拥有过亿的用户。这在三年前是无法想象的。这两个登录标志在国外网站已经是标配了。回到咱们中国,虽然大家都在吐槽说中国的互联网是假开放,但是不可否认的是,你还是可以让用户利用新浪微博或者qq或者豆瓣等等账户登录你的网站。所以,我们弱小的互联网创业者在创业的时候,除了要感谢党,感谢CCTV,还是得感谢一下新浪和企鹅。
这篇文章具体谈谈在iOS上如何通过新浪微博账户登录应用。
在讨论这个之前,不得不说到OAuth。这是个什么玩意呢?按照官方的说法,OAuth是:An open protocol to allow secure API authorization in a simple and standard method from desktop and web applications.
大概意思是说OAUTH是一种开放的协议,为桌面程序或者基于BS的web应用提供了一种简单的,标准的方式去访问需要用户授权的API服务。
也就是说,通过OAuth,应用或者网站服务可以获取用户的授权,但又不会获取到用户的账户信息(比如登录名和密码)。这里的授权包括:允许向用户发送某些信息,允许向用户提供访问网站的权限等等。
其实,对于大部分应用来说,只需要验证用户是否属于新浪微博用户,如果属于,那也自动是我的用户,如果不属于,那么请用户就地注册一个账户。换句话说,你将新浪微博的几亿用户自动承认成为你的网站用户,而不需要这几亿用户通过注册才能使用你的应用。所以,这是典型的一种YY思想,YY你瞬间获得了几亿用户!!
既然OAuth是一个协议,那么就需要用编程语言去实现它。目前,各种版本的OAuth基本都可以在google code下载到,包括C,C++,C#,JS,PHP等等。当然,肯定会有objective-C,否则,我也不会写这篇文章了。
OK,假设已经有了一个版本的Objective-C的OAuth的实现。下面就利用它来实现微博账户在iOS上的登录。
第一步:注册应用。
可以通过新浪微博的开放平台去注册一个应用。之后你会得到一个App Key和一个App Secret。拥有它们,你才可以申请权限。
假设你的App Key是“1234567890”,App Secret是“abcdefghijklmnopqrstuvwxyz"
第二步:写代码。
将获取到的OAuth的objective-C版本加入你的project中。将你申请到的Key和Secret做为两个变量定义并赋值。
对于OAuth来说,很多细节不需要我们去关注的,只要知道几个重要的步骤即可:
1. 创建一个request,这个request包含key和secret的信息,用于向新浪微博申请获得对应用户的权限。
2. 通过request向新浪微博发出请求,告诉新浪微博说:我是一个合法的注册过的应用,现在准备向大人您申请获得用户的权限,请您高抬贵手。
3. 获得未授权的 Request Key。这个获得未授权的 Request Key就相当于放行条,也就是新浪微博允许你开始获取用户的权限。
4. 根据这个Request Key的内容,获得一个url地址,这个地址页面就是想登录你应用的用户输入用户名和密码的地方。注意的是,这个url是属于新浪微博为你的这个应用创建的,是属于新浪微博的。调用iOS的接口,从浏览器打开这个url界面。
5. 用户在上述登录界面输入自己的用户名和密码,成功登录之后(其实是新浪微博认证此用户是注册了新浪微博的用户),你可以获得已授权的 Access KEY。这个Access Key就包含了用户多登录信息(包括昵称、用户ID等等,这里的昵称是指用户显示在新浪微博上的名字,而不是用户的登录名)。
6. 到目前为止,你已经确定用户是新浪微博的用户了,自然也是你的应用的用户(继续YY),所以接下去,你就赶紧允许用户登录成功,进入你的应用主界面,享受你的应用程序了。还愣着干嘛,翠花,上酸菜!!
整个过程就是这几步。如果你觉得读到这里你还是不懂,那么恭喜你,你是正常人。因为我这篇文章是给懂的人(包括我自己看的)。不过有个方法可以让不懂的你也能懂,就是找到一个objective-c实现的OAuth,并且对着每一步(第六步除外,第六步是在你自己的project中实现。你总不能让OAuth给你上酸菜吧),找到实现每一步功能的函数,然后加入你自己的project中。
OK,正式开始YY你的几亿用户吧。