首先oauth协议是什么:
OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密码),
即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权.
举个第三方使用oauth协议的例子:用户访问网站a,网站a就会请求一个oauth登陆的界面,然后用户在这个界面上输入qq账号和密码,然后qq oauth返回登陆结果(不包括qq账
号密码),最后网站a切换登陆状态。
这里是使用qq登陆时的url地址:https://graph.qq.com/oauth/show.....client_id=100490398...redirect_uri=.....,注意到其中也出现了oauth。client_id相当于网站注册的
id,redirect_url相当于和这个id匹配的地址。
接下来就详细说明一下使用oauth实现第三方登陆的工作流程
首先是请求一个oauth的登陆页,这个url是一个带有特定参数的url(使用这个协议,必须先去官网申请,然后他会给申请方一些参数,比如上面个的client_id,之后才可以使用qq第三方登陆)
然后用户在这个登陆页上登陆,登陆错了没的说,直接出账号密码错误。当用户登陆成功时,就会跳到redirct_url这个回调地址上面,在回调的时候有一些加密过的参数,然后网站使用$_GET[]获得这些参数。
之后第三方网站得到这些参数,又会请求一个特定的url地址(用户授权的url,后台动态拼接出来),有一些参数会在短时间内过期,所以这一次交互,要紧接上次的请求。在这次的请求后,oauth返回登陆用户的信息(xml或者jaon),第三方网站也就可以知道登陆者的信息了。
需要注意的是,其中还有一些例如AccessToken之类的参数,可以让用户做一些如分享到空间之类的操作.也就是说用户登陆成功后,第三方获得令牌,之后就可以调用相对的api进行一些操作了。