会员福利:批量购买,优惠多多 查看详情

yii2项目实战-第三方登录的实现
更新于 2017年01月16日 by 白狼 被浏览了 4995 次
2 3

第三方登陆,想必很多网站都会支持,比如国内常见的qq登录,微博登录,当然国外的google,facebook等等。虽然各网站都支持OAuth2的方式接入,但是,如果一个应用要支持很多第三方登录,就需要我们根据各平台的文档,写很多接口,很繁琐的一件事。今天我们就准备借助yii2-authclient组件,化繁为简。

本文我们将以一个完整版的web端实现QQ登录为例,来了解那些基于OAuth2.0标准协议的开放授权。

首先我们先解释几个名词,方便各位了解

1、OAuth: OAuth(开放授权)是一个开放标准,允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方网站或分享他们数据的所有内容。

2、OAuth2.0:对于用户相关的OpenAPI(例如获取用户信息,动态同步,照片,日志,分享等),为了保护用户数据的安全和隐私,第三方网站访问用户数据前都需要显式的向用户征求授权。

QQ登录OAuth2.0采用OAuth2.0标准协议来进行用户身份验证和获取用户授权,相对于之前的OAuth1.0协议,其认证流程也更简单和安全。

继续来看一下OAuth2.0总体处理流程

  • Step1:在各平台申请接入,获取appid和apikey;
  • Step2:开发应用,并设置协作者帐号进行测试联调;
  • Step3:放置第三方登录按钮(创建可访问链接);
  • Step4:通过用户登录验证和授权,获取Access Token;
  • Step5:通过Access Token获取用户的OpenID;
  • Step6:调用OpenAPI,来请求访问或修改用户授权的资源。

如果你是第一次接触第三方登录,上面Step1-Step6共6个步骤,还希望你能看上个两三遍,下面我们的实现也会按照上面的6个步骤进行。

以Web应用接入QQ登录为例,Step1~Step2就不说了,很简单,去“qq互联”申请帐号并获取appid和apikey即可(如果是其他平台,请自行搜索去哪里申请哦)。另外需要提醒的是,个人的应用用自己的qq申请是没问题的,如果是公司的应用,建议不要使用个人的微博来接入应用,避免各位离开当前公司后带来不必要的麻烦。

Step3,其实就是我们应用的一个可访问地址,我们访问这个地址,随后让用户在qq平台用他自己的qq帐号进行登录(这已经是Step4了)。通常为了获取Access Token,我们需要先获取Authorization Code,拿着这个Authorization Code才能获取Access Token。结合Step5~Step6,我们来看下稍微比上面细节化的一些分析

从上面的步骤来看,qq的稍微麻烦些,这个等各位看完本文后,再去接入其他平台登录就有体会。

也就是说,我们要在Step3中,请求一个你的应用地址,随后完成上面一系列的动作,才能正确的获取用户在qq平台的一些个人信息。来一张图加深下理解

151c061713-oauth201.gif

当然

继续阅读

还有73%的精彩内容,购买继续阅读