第三方登录技术知识

第三方登录:
首先说一下:oauth。
OAuth:开放授权。
工作原理:三个重要步骤,第三方登录获取request token,获取access token。后续api访问,refresh token刷新access token。
第二部分:open authorizatio:协议
关于oauth版本:
1.0版本发布于2007年末。有漏洞。自行度娘。
2.0版本发布于2010年初。
我们用2.0版本

auth应用场景:
我们使用qq登录慕课网的过程:qq用户授权慕课网使用其qq账号相关的信息。
获取授权后,再复合权限规则的情况下访问各种api。
三个步骤:
步骤一:请求oauth登录页面,
需要知道qq的url地址:request token url --未授权的令牌请求服务地址;。。。
慕课网请求qq登录页面时使用的带有特定参数的url(参数就是:网站到qq互联官网注册申请可以登录时,qq互联给的一个数据);
网站可以第三方登录:需要到qq互联的官网,申请可以用qq第三方登录。要描述自己的域名等等。然后qq互联再把一个appid和appkey给网站。好像账号和密码一样。
步骤二:用户使用qq号登录并授权:
账号密码输入正确后,会跳回到要登陆的网站。就是一个回调地址。在调转过程中,url会带一个code。当url跳转到慕课网指定的回调地址之后,在php代码中我们可以使用$_GET[‘code’]来获取code。

步骤三:返回登录结果:
有了code可以确定登录是成功的。但为了安全,还需要慕课网的服务器再次请求一个url地址。就是下面的地址:
user authorization url -用户授权的令牌请求服务地址。
通俗点说就是:用户qq登录授权之后需要请求一个带有特定参数的url;
这个url带了什么参数呢?这个就不好看了,不是明文的。(大体上是一个client_id,就是慕课网的到的appid,client_secret就是appkey。code,就是慕课网拿到的code参数。)
code时效很短。慕课网需要短时间完成一来一回的数据交互。这样安全。
慕课网请求了授权之后的url之后,就会得到响应数据,通过响应数据我们可以知道到底是谁登录了慕课网。这时候,就可以把信息写入到慕课网中了。这时候code也就失效了。code只会被使用一次。

响应数据里面还会包含access token:
相当于用户发送给第三方网站的一个令牌。让他可以再qq空间分享慕课网的教程。

access token:
access token–用户通过第三方应用访问oauth接口的令牌通过慕课网把自己喜欢的课程分享到qq空间。

关于accessToken和refreshToken:
token就是令牌。
accesstoken也是有声明周期的:
accesstoken-具有加长的生命周期(10天半个月甚至更长);
refreshtoke:刷新令牌;
小结:
理论比较枯燥,也难以理解;
、、、、、、、、、、、、、、
第三方登录之qq登录:
接入qq平台前准备:
一个qq账号,一个公网可以通过域名访问的web服务器。
没有域名没办法申请appid和appkey。
申请appid和appkey:

流程:开发者注册->应用->创建web应用。
需要在根目录下放一个index.html文件,为写腾讯提供的一个header头里面的内容。
验证通过,则就会看到一个appid和appkey了。

、、测试回调地址:
进入正题:
使用wamp环境。
配置域名为test.open.isbadguy.com的virtual-host;
host文件:test.open.isbadguy.com =>127.0.0.1;
//lamp或lnmp请自行配置virtual――host;也可以使用localhost默认主机。
为了能在本地顺利开发测试,需要把配置的域名设置为回调地址。
在域名中创建一个文件,处理逻辑的文件。
、、引入官方的sdk:
从开放平台的文档资料里面下载。

找到php的版本sdk;sdk只是一个示例代码。
、、sdk参数配置:
把connect文件放到网站的根目录下。
sdk解读:
文档资料->oauth协议-》开发攻略_server_side;
server-side or clien-side;
php是服务端语言。
oauth可以支持多种语言。server_side和client-side是告诉开发者服务器端和客户端语言的帮助你。
sdk核心类和重要方法:
登录授权相关的三个主要类(connect2.1、class、*.class.php)
recoder.class.php配置读写与sdeesion存取。
url.calss.php给予curl库的get与post请求
oauth.class.php oauth相关url动态拼接与token操作。
skd优化:
sdk太老,很久无人维护。
–调整文件及目录结构。
sdk中的常量名太常见可能和现有项目冲突
–批量替换sdk中的常量名称为不常见名称。
—qqconnectapi.php是整个qq登录的入口文件。
file()函数是把一个文本文件读成字符串,然后给前面的变量名。(其实也是原样输出。)

。。整合sdk到web项目中–请求访问qq登录页面:

整合sdk到wen项目中–获取code和accesstoken;
openid:这是用户的唯一标识。可以存在数据库中。不同的qq有不同的openid。
可以吧accesetoken和openid写入cookie中。
用于判断用户是否登录。
api的调用实例:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值