“回调地址”全攻略 java程序员

标题里号称“全攻略”,说实话,是为了吸引眼球。至于本文算不算得上合格的“全攻略”,我建议各位看官带着怀疑的眼光来阅读,之后自己评判 :) 

1. 什么是“回调地址”? 

官方文档的定义在这里:http://open.taobao.com/dev/index.php/%E5%9B%9E%E8%B0%83URL 

我的通俗理解在这里(我在3楼的回帖):http://open.taobao.com/bbs/read.phptid=12062 

2. 什么时候需要“回调地址”? 

如果你的应用中需要访问某个用户在淘宝网上的私有数据(比如卖家应用,要帮助卖家进行店铺管理),那么,在调用相应的 API 的时候,就需要提供身份证明,也就是那个从“回调地址”收到的 sessionKey。这就要求用户先登录淘宝网,所以这种应用就需要实现“回调地址”。 

换句话说,就是创建时选择为“他用”的那些应用,需要实现“回调地址”。 

淘宝客应用是不需要用户登录淘宝网的。虽然有些 API 访问的是私有数据(比如 taobao.taobaoke.report.get),但它会自动使用“跟 app 捆绑的淘宝账号”,所以也不需要登录。 

3. TOP 平台在申请上线时如何审核“回调地址”? 

截至目前(本帖发表时),对于“自用”型的应用,虽然不要求实现“回调地址”的完整功能,但它必须是一个可以访问的地址(指从负责审核的小二的机器上可以访问,所以 http://localhost/callback.php 这类地址是不行的),能返回随便一个什么页面内容即可。 

对于“他用”型的应用,要求实现“回调地址”的完整功能,既能正确接受合法的请求,也能拒绝非法的请求(“非法”有多种情形,最典型的就是“签名错误”,这个是必需验证的,否则你的应用就太不安全了)。 

4. 分清“API 签名”和“回调地址签名验证” 

在 TOP API 文档中有两处提到“签名”,但它们的含义和作用是完全不一样的。 

一个是“API 签名”:你的应用在调用任何一个 TOP API 的时候,都要做一个“签名”,发送给 TOP 服务器,由它来验证请求的合法性。 

一个就是我们这里要说的,在实现“回调地址”的“用户验证”功能时,你的应用对收到的请求进行“签名验证”,验证这个请求是否真是从 TOP 服务器转过来的合法请求。 

5. 如何实现“用户验证”过程 

官方文档在这里: 

淘宝用户授权方式 (http://open.taobao.com/dev/index.php/%E6%B7%98%E5%AE%9D%E7%94%A8%E6%88%B7%E6%8E%88%E6%9D%83%E6%96%B9%E5%BC%8F

简单说,就是你在你的网页里做这样一个链接 http://container.open.taobao.com/containerappkey={appkey},引导用户到淘宝网上去完成登录过程,等他登录成功后,淘宝网会把他引导回到你指定的“回调地址”上。而你在“回调地址”上实现的程序在验证了签名之后,就可以拿着 sessionKey 去访问这个用户在淘宝网的私有数据了。 

6. 如何在“回调地址”上实现“签名验证”算法? 

官方的算法介绍在这里(里面有 Java 版的实现代码): 

淘宝用户验证 (http://open.taobao.com/dev/index.php/%E7%94%A8%E6%88%B7%E9%AA%8C%E8%AF%81

我自己的 PHP 版实现代码——见下一帖。 
原文地址:https://www.cnblogs.com/java20130725/p/3215687.html