【第22期】观点:IT 行业加班,到底有没有价值?

oauth 2.0

转载 2013年12月04日 11:20:51

I:OAuth 2.0 开发前期准备

天上不会自然掉馅饼让你轻松地去访问到人家资源服务器里面的用户数据资源,所以你需要做的前期开发准备工作就是把AppKey, AppSecret取到手 新浪获取传送门腾讯获取传送门

这里说一下,在申请AppKey和AppSecret的过程中,新浪和腾讯的申请做法是有区别的。image
在新浪微博的AppKey,AppSecret申请时会验证你是否拥有域名的所有权    


image    
而腾讯在这一块上面则没有这个要求!

PS:申请成为开放平台开发者时需要上传身份证电子文件。。。。。

II:为什么不用官方提供的SDK

说到这个我就想吐槽了,这官方的SDK尼玛的明显排斥堆挤咋们做.net的啊!~~~   
先上新浪支持的SDK:    
image    


然后在上腾讯支持的SDK:    
image    
image

文档资料不全不说,出了问题你还得找人家。所以在这里我也试想过转战JS SDK看看~于是又有了如下的悲剧事情发生:

腾讯和新浪的JS SDK都是主推用js弹窗方面的。这样不太会电脑的用户使用起来的话,就会觉得你的这个第三方应用会不会是病毒神马的。   
image IE9下弹窗提示    


image Chrome下也会提示,所以这个东西是浏览器本身机制的问题~所以在帖子里面也得到了准确的答复。    


image 稍微设置一下允许弹窗的话就得到上面这个怪异摸样。。。    


而在这里稍微说一下腾讯的OPENJS这个东西!!我个人感觉它想挑战一下我们开发人员的智商。。。    
image这个为什么浏览器没有阻止,完全是在同域的情况下啊~~~TX你这互联老大连另外整个类似于新浪的独立域名的工作都没做好啊!!还在自家的API文档站上高亮标示起这个OpenJS新秀呀。    
image 

不过相比新浪的JS SDK腾讯自家的OpenJS的技术支持做得非常好的。你只要碰到了问题。都有人在线帮你解答。

PS:如果你选用JS SDK的话,那么你的业务逻辑将会以js脚本的形式暴露在客户端浏览器之下。

III:Authorization Code验证授权模式

基础知识:   
在这里先引用前一篇文章里的示例用图,然后再接着讲解各个部分的相关知识。    

1.Resource Server(资源服务器):负责存放服务提供商的用户数据资源等相关信息。当第三方应用访问这个资源服务器时,需要提供Access Token否则会提示访问失败。所以我们最终的目的就是让自己开发的第三方Web应用顺利地访问到服务提供商的资源服务器,这才是这个系列文章的最终目的。

2.Authorization Server(验证授权服务器):负责验证用户账户名密码,以及给第三方WEB应用发放Access Token。在这里我上传两张图片为你叙述Authorization Server是什么样子。   
image 新浪的Authorization Server    


image    
腾讯的Authorization Server

接下来将会继续讲解,这个重要的Access Token(访问令牌)到底是怎么取得的。   

首先作为第三方网站上会显示一个跳转到新浪,腾讯授权服务器的<a />超级链接。如下图:    
image    


下面的图片将介绍这两个链接的跳转地址规范:    
image    

新浪的规范    
https://api.weibo.com/oauth2/authorize?client_id={AppKey}&response_type=code&redirect_uri={YourSiteUrl}    


腾讯的规范    
https://open.t.qq.com/cgi-bin/oauth2/authorize?client_id={AppKey}&response_type=code&redirect_uri={YourSiteUrl}

可以看出新浪和腾讯的规范在此步骤基本一致。

现在讲述第2步:image    


这时Authorization Server将会跳转回申请授权验证的第三方网站~但是会在QueryString内加上一个名为code的参数!例子如下:    

腾讯:http://www.mytestsite.com/Tencent.aspx?code=174256357036c9df7db17342f15a9476&openid=45CD8A7A05A0C3E30D8A9AB74EEAA8D1&openkey=98B2964245A2BE2830F7A793E09FE6B0    


新浪:http://www.mytestsite.com/Sina.aspx?code=19b83321705c538e0422ba09ac9043a0

从这一步可以看出企鹅与标准脱离的野心逐渐浮现。。。它不仅仅返回code而且还参杂openid&openkey~不知在各位开发者的眼里会不会觉得比较另类?

当我们拿到跳转回来Url上的QueryString参数code后就可以再次去Authorization Server上请求获取AccessToken这个重要令牌了!下面接着上图!!!   
image

具体说一下第3步的请求地址规范:   
新浪:https://api.weibo.com/oauth2/access_token?client_id={AppKey}&client_secret={AppSecret}&grant_type=authorization_code&redirect_uri={YourSiteUrl}&code={code}    


腾讯:https://open.t.qq.com/cgi-bin/oauth2/access_token?client_id={AppKey}&client_secret={AppSecret}&redirect_uri={YourSiteUrl}&grant_type=authorization_code&code={code}

在这一步,腾讯和新浪双方都完全保持一致,非常庆幸!

第4步,重点来了,授权服务器即将返回Access Token。这是以Response Body的方式,所以说Authorization Code授权方式并没有对客户端暴露AccessToken访问令牌。也是我极力推荐使用的一种授权方式。   
image    
image    
上图是新浪返回Access Token的内容    


image    
image    
上图是腾讯返回Access Token的内容

这里需要注意一下第3,4步必须要以http post的方式去发起Request。~

IV:总结

image

举报

相关文章推荐

帮你深入理解OAuth2.0协议

1. 引言 如果你开车去酒店赴宴,你经常会苦于找不到停车位而耽误很多时间。是否有好办法可以避免这个问题呢?有的,听说有一些豪车的车主就不担心这个问题。豪车一般配备两种钥匙:主钥匙和泊车钥匙。当你...

OAuth 2.0 客户端,第 2 部分: 客户端凭据授权

概述 OAuth 是一个开放的授权标准,允许客户端代表一个资源所有者获得对受保护服务器资源的访问权限。资源所有者可以是另一个客户端或最终用户。OAuth 还可以帮助最终用户将对其服务器资源的访问权限授权给第三方,而不必共享其凭据,比如用户名和密码。本系列文章遵从 RFC6749 中列出的 OAuth 2.0 授权框架。可以在 Internet Engineering Task Force

OAuth2.0授权码模式理论+实践

分享: 0 OAuth是一个关于授权(Authorization)的开放网络标准,目前的版本是2.0版。注意是Authorization(授权),而不是Authenti...

微信 OAuth2.0

一、什么是OAuth2.0 官方网站:http://oauth.net/   http://oauth.net/2/ <p s

OAuth2.0授权码模式理论+实践

OAuth是一个关于授权(Authorization)的开放网络标准,目前的版本是2.0版。注意是Authorization(授权),而不是Authentication(认证)。用来做Authenti...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)