- 浏览: 2184199 次
- 性别:
- 来自: 上海
-
文章分类
- 全部博客 (1878)
- [网站分类]ASP.NET (141)
- [网站分类]C# (80)
- [随笔分类]NET知识库 (80)
- [随笔分类]摘抄文字[非技术] (3)
- [随笔分类]养生保健 (4)
- [网站分类]读书区 (16)
- [随笔分类]赚钱 (7)
- [网站分类].NET新手区 (233)
- [随笔分类]网站 (75)
- [网站分类]企业信息化其他 (4)
- [网站分类]首页候选区 (34)
- [网站分类]转载区 (12)
- [网站分类]SQL Server (16)
- [网站分类]程序人生 (7)
- [网站分类]WinForm (2)
- [随笔分类]错误集 (12)
- [网站分类]JavaScript (3)
- [随笔分类]小说九鼎记 (69)
- [随笔分类]技术文章 (15)
- [网站分类]求职面试 (3)
- [网站分类]其他技术区 (6)
- [网站分类]非技术区 (10)
- [发布至博客园首页] (5)
- [网站分类]jQuery (6)
- [网站分类].NET精华区 (6)
- [网站分类]Html/Css (10)
- [随笔分类]加速及SEO (10)
- [网站分类]Google开发 (4)
- [随笔分类]旅游备注 (2)
- [网站分类]架构设计 (3)
- [网站分类]Linux (23)
- [随笔分类]重要注册 (3)
- [随笔分类]Linux+PHP (10)
- [网站分类]PHP (11)
- [网站分类]VS2010 (2)
- [网站分类]CLR (1)
- [网站分类]C++ (1)
- [网站分类]ASP.NET MVC (2)
- [网站分类]项目与团队管理 (1)
- [随笔分类]个人总结 (1)
- [随笔分类]问题集 (3)
- [网站分类]代码与软件发布 (1)
- [网站分类]Android开发 (1)
- [网站分类]MySQL (1)
- [网站分类]开源研究 (6)
- ddd (0)
- 好久没写blog了 (0)
- sqlserver (2)
最新评论
-
JamesLiuX:
博主,能组个队么,我是Freelancer新手。
Freelancer.com(原GAF – GetAFreelancer)帐户里的钱如何取出? -
yw10260609:
我认为在混淆前,最好把相关代码备份一下比较好,不然项目完成后, ...
DotFuscator 小记 -
日月葬花魂:
大哥 能 加我个QQ 交流一下嘛 ?51264722 我Q ...
web应用程序和Web网站区别 -
iaimg:
我想问下嵌入delphi写的程序总是出现窗体后面感觉有个主窗体 ...
C#自定义控件:WinForm将其它应用程序窗体嵌入自己内部 -
iaimg:
代码地址下不了啊!
C#自定义控件:WinForm将其它应用程序窗体嵌入自己内部
天天写blog,天天好心情,good good study ,day day up
在上篇《淘宝API开发系列--开篇概述》介绍了下淘宝API平台的一些基本知识,由于一直有事情忙,就没有及时跟进随笔的更新,本篇继续讨论淘宝API的开发知识,主要介绍商家的绑定操作。上篇我们说过,淘宝就是基于应用程序键来控制用户的访问频率和流量的,另外可以通过应用程序键,让使用者登陆确认,获取到相关的授权码,然后获取SessionKey,作为访问使用者淘宝资源(如买入卖出等私人记录的信息)。
我们再看看SessionKey是如何获取的(下面是淘宝关于正式环境下SessionKey的说明):
字符串里面的top_session值即为SessionKey。
由于本篇文章主要是介绍C/S客户的应用,因此客户端的应用就不能通过回调Url方式获得用户的验证,我们可以通过在Winform中的WebBrowser控件,显示一个登陆验证及访问确认的操作界面给客户,当客户确认的时候并返回Session Key的内容界面的时候,我们取出Session Key保存并关闭浏览器窗口即可,今后把该SessionKey作为参数来访问相关需要Session Key的API即可。
另外,由于SessionKey的间隔时间比较短,如果API调用间隔时间比较长,那么SessionKey有可能失效的,但是我们注意到,如果API调用的时候,SesionKey过期 那么会抛出TopException(其中ErrorCode为26或者27是SessionKey过期),里面有关于与TopException的部分说明如下:
<script language="JavaScript" src="http://book.book560.com/ads/ads728x15.js" type="text/javascript"></script>26
Missing Session
缺少SessionKey参数
27
Invalid Session
无效的SessionKey参数
我们先看看具体实现的界面,然后分析其中的实现逻辑吧。
1、首次需要登录的时候,使用一个Winform嵌套一个WebBrowser控件,实现网页登录。
2、商家用户输入账号密码后,确认是否授权程序访问相关资源。
3、确认后生成SessionKey,这个Key正是我们的程序需要的关键内容,因此需要自动获取出来。
4、程序拿到该Session Key后,把它作为参数来访问淘宝API获取相关的信息,这里获取交易API的购买信息,需要SessionKey的。
以上就是使用SessionKey的API工作流程界面,我们下面介绍一下相关的实现代码。
1) 主窗体主要的操作代码:
代码
public partial class Form1 : Form
{
private TopJsonRestClient jsonClient;
private TopContext context;
private void Form1_Load(object sender, EventArgs e)
{
this.winGridView1.ProgressBar = this.toolStripProgressBar1.ProgressBar;
this.winGridView1.AppendedMenu = this.contextMenuStrip1;
jsonClient = new TopJsonRestClient("http://gw.api.taobao.com/router/rest", "12033411", "你的密钥");
client = GetProductTopClient("json");
xmlClient = new TopXmlRestClient("http://gw.api.taobao.com/router/rest", "12033411", "你的密钥"");
}
/// <summary>
/// 判断是否顺利获取SessionKey
/// </summary>
/// <returns></returns>
private bool GetAuthorizeCode()
{
string authorizeCode = "";
FrmAuthorized dlg = new FrmAuthorized();
if (dlg.ShowDialog() == DialogResult.OK)
{
authorizeCode = dlg.AuthrizeCode;
}
if (string.IsNullOrEmpty(authorizeCode)) return false;
context = SysUtils.GetTopContext(authorizeCode);
if (context == null) return false;
return true;
}
private void BindData()<script language="JavaScript" src="http://book.book560.com/ads/ads728x15.js" type="text/javascript"></script>
{
if (context == null)
{
bool flag = GetAuthorizeCode();
if (!flag) return;
}
string sessionKey = context.SessionKey;
////获取用户信息
//UserGetRequest request = new UserGetRequest();
//request.Fields = "user_id,nick,sex,created,location,alipay_account,birthday";
//request.Nick = "wuhuacong";
//User user = client.Execute(request, new UserJsonParser());
//MessageBox.Show(ReflectionUtil.GetProperties(user));
try
{
//买入交易
TradesBoughtGetRequest req = new TradesBoughtGetRequest();
req.Fields = "tid,title,price,type,iid,seller_nick,buyer_nick,status,orders";
req.PageNo = 1;
req.PageSize = 10;
ResponseList<Trade> rsp = jsonClient.GetBoughtTrades(req, sessionKey);
this.winGridView1.DataSource = rsp.Content;
MessageBox.Show(rsp.Content.Count.ToString());
//卖出交易
TradesSoldGetRequest soldReq = new TradesSoldGetRequest();
soldReq.Fields = "tid,title,price,type,iid,seller_nick,buyer_nick,status,orders";
soldReq.PageNo = 1;
soldReq.PageSize = 10;
ResponseList<Trade> soldRsp = jsonClient.GetSoldTrades(soldReq, sessionKey);
this.winGridView1.DataSource = soldRsp.Content;
MessageBox.Show(soldRsp.Content.Count.ToString());
}
catch (TopException ex)
{
if (ex.ErrorCode == 26 || ex.ErrorCode == 27)
{
if (MessageUtil.ShowYesNoAndError("SessionKey过期,您是否需要重新认证") == DialogResult.Yes)
{
bool flag = GetAuthorizeCode();
if (!flag) return;
BindData();//重新刷新
}
else
{
return;
}
}
}
}
private void btnTest_Click(object sender, EventArgs e)
{
BindData();
}
2、用户登陆的窗体,就是一个form窗体加上一个WebBrowser控件,窗体代码如下:
代码
public partial class FrmAuthorized : Form
{
/// <summary>
/// 授权码
/// </summary>
public string AuthrizeCode = "";
private string url = "http://open.taobao.com/authorize/?appkey=12033411";
public FrmAuthorized()
{
InitializeComponent();
}
/// <summary>
/// 获取HTML页面内制定Key的Value内容
/// </summary>
/// <param name="html"></param>
/// <param name="key"></param>
/// <returns></returns>
public string GetHiddenKeyValue(string html, string key)
{
string str = html.Substring(html.IndexOf(key));
str = str.Substring(str.IndexOf("value") + 7);
int eindex1 = str.IndexOf("'");
int eindex2 = str.IndexOf("\"");
int eindex = eindex2;
if (eindex1 >= 0 && eindex1 < eindex2)
{
eindex = eindex1;
}
return str.Substring(0, eindex);
}
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (e.Url.AbsoluteUri == url)
{
AuthrizeCode = GetHiddenKeyValue(this.webBrowser1.DocumentText, "autoInput");
if (!string.IsNullOrEmpty(AuthrizeCode) && AuthrizeCode.IndexOf("TOP-") >= 0)
{
this.DialogResult = DialogResult.OK;
this.Close();<script language="JavaScript" src="http://book.book560.com/ads/ads728x15.js" type="text/javascript"></script>
}
}
}
private void FrmAuthorized_Load(object sender, EventArgs e)
{
webBrowser1.Navigate(url);
}
}
这样我们就可以在首次使用API或者SessionKey失效的时候,让商家用户输入账号密码并确认即可,其他使用即可顺利无阻。
是不是有点意思呢,赶快试试吧,说不定带来一些意想不到的收获及创意哦。
正式环境下获取SessionKey
注意:web插件平台应用和web其它应用在正式环境下是同样的获取方法
1、WEB应用
例如回调URL为:http://localhost
访问 http://container.open.taobao.com/container?appkey={appkey},页面会跳转到回调URL,地址类似如下:
http://localhost/?top_appkey={appkey} &top_parameters=xxx&top_session=xxx&top_sign=xxx
回调url上的top_session参数即为SessionKey
2、客户端应用
访问 http://auth.open.taobao.com/?appkey={appkey},即可获得授权码
通过http方式访问 http://container.open.taobao.com/container?authcode={授权码},会得到类似如下的字符串
top_appkey=1142&top_parameters=xxx&top_session=xxx&top_sign=xxx
评论
我现在想实现app使用淘宝帐号快速登陆,我把参数都已经设好了,但不是很清楚是通过哪种方式去调用淘宝的接口验证返回结果的?? 我用的php ,还请指点一二...
可以通过邮箱或者QQ交流,liuyuan37373737@126.com
qq:564953967
发表评论
-
UML
2010-08-09 11:39 1314开放分类:计算机技术计算机术语计算机科学 收藏分享到顶[6] ... -
用WebService实现调用新浪的天气预报功能
2010-07-15 21:47 2987用WebService实现调用新 ... -
Cookie简介及JSP处理Cookie的方法
2010-07-29 09:28 982Cookie简介及JSP处理Cookie的方法 一.什么是 ... -
SQL Server 2005/2008 用户数据库文件默认路径和默认备份路径修改方法
2010-06-09 22:16 1268一直想把数据库的默认 ... -
C#Winform调用网页中的JS方法
2010-07-12 11:07 2249其实还是还是相当的简单,本文将详细的用代码来展示一下如何调用, ... -
用WebService实现调用新浪的天气预报功能
2010-07-15 21:47 1519用WebService实现调用新 ... -
SQL Server 2005/2008 用户数据库文件默认路径和默认备份路径修改方法
2010-06-09 22:16 1104一直想把数据库的默认 ... -
基于 VS 2010 阐述C# 4个特性
2010-05-28 09:26 1097基于 VS 2010 阐述C# 4个特性基于 VS 20 ... -
Google AdSense中文官方博客今天公布了AdSense内容广告与AdSense搜索广告的收入分成比例
2010-05-25 09:12 1157google adsense 的广告分成比例总算是公布出来了。 ... -
权限管理数据表设计说明
2010-05-21 15:19 1093权限管理数据表设计说明 B/S系统中的权限比C/S中的更显的 ... -
权限管理的设计方法
2010-05-20 09:26 1445权限管理的设计方法是 ... -
多表分页存储过程
2010-05-17 14:25 1073分页存储过程 在网站设计,网页开发中,是要被经常遇到的。 ... -
vs2010跟vs2008比较增加了哪些功能
2010-05-18 09:10 2263随着vs2010的发布,新的 ... -
COM域名难逃实名监管 CN域名简化流程抢用户
2010-05-13 09:22 1207互联网实名制的落实第 ... -
网站安全之XSS漏洞攻击以及防范措施
2010-04-29 08:59 1454在网站开发中,安全问题是重中之重的问题,特别像一个sql注入, ... -
深入了解ASP.NET运行内幕
2010-04-28 09:04 1189做事情要知道根本所在 ... -
WebBrowser中显示乱码
2010-04-22 09:09 1758最近在开发cs项目的时候,因为嵌套了一个网页,要用到we ... -
vps配置笔记(10)架设svn服务
2010-04-21 09:41 1292linux 下面架设svn服务器,有点难度,我找了好多资料,现 ... -
IEnumerable
2010-04-16 09:12 1288在平常的代码编写中,虽然不常用到Ienumerable 但却不 ... -
JS代码实例:实现随机加载不同的CSS样式
2010-04-19 13:38 1435如果让网页浏览者每次打开页面都有新的感觉,可以通过替换css样 ...
相关推荐
这通常涉及验证订单信息(如收货地址、商品数量等)、检查库存、生成发货单、调用物流公司的API进行快递单号的生成和绑定等一系列操作。为了保证系统的稳定运行,这些步骤都需要在事务控制下进行,以防止因网络问题...
淘宝客商城网源码是一种基于淘宝开放平台API的电子商务网站构建方案,允许开发者或商家构建自己的在线商城,通过推广淘宝联盟的商品赚取佣金。在这个压缩包文件“淘宝客商城网源码.rar”中,可能包含了实现这一功能...
同时,源码中可能还包含了与淘宝API的交互代码,这部分对于理解数据交换和调用规则至关重要。 5. **安全与维护** 完整无错的源码意味着在部署和运行过程中应较少出现故障。但为了保证U站的稳定运行,还需要关注...
淘宝客是一种网络推广模式,通过分享商品链接,帮助淘宝商家推广产品并赚取佣金。这个程序允许用户创建自己的淘宝客网站,自动抓取淘宝网上的商品信息,并提供相应的推广服务。 【详细知识点】: 1. **PHP**:PHP...
4. **API接口集成**:与淘宝网的数据同步是必不可少的,程序需要调用淘宝开放平台(Taobao Open Platform, TOP)提供的API,获取商品信息、订单状态、佣金结算等数据。 5. **安全机制**:考虑到涉及用户的个人信息...
3. 代码实现:使用合适的编程语言编写代码,实现与淘宝API的交互,动态生成并更新套餐信息。 三、使用方法 1. 注册开发者账号:首先,商家需在淘宝开放平台注册成为开发者,获取必要的权限和密钥。 2. 熟悉API文档...
CSV数据导入 √ 支持淘宝/天猫CSV数据导入功能 API开放接口 √ 开放接口供所需人员使用 物流跟踪接口 √ 支持快递100/快递鸟物流数据接口 第三方登入 √ 支持QQ/微信/新浪第三方接口登入 ERP对接 √ 支持其它ERP...
淘宝装修市场(Taobao App Extension,简称TAE)提供了丰富的功能,让商家能够个性化定制自己的店铺页面,提升用户体验。TAE SDK 2.0.0 是一套专为开发者设计的工具集,用于构建和管理这些自定义功能。这个开发文档...
随着电子商务行业的快速发展,越来越多的商家和个人希望通过各种方式来推广自己的产品和服务,以达到提高销量的目的。在这个背景下,淘宝客(即淘客)模式应运而生,并逐渐成为一种主流的推广手段之一。淘宝客通过...
在微信小程序中实现电子优惠券功能,需要熟悉小程序的开发环境,包括微信开发者工具的使用、小程序的生命周期管理、数据绑定和网络请求等基础知识。 二、优惠券功能开发 1. 数据模型设计:首先,我们需要设计优惠...
淘客,即淘宝客,是淘宝商家推广的一种模式,通过推广赚取佣金。小程序作为一种轻量级的应用形式,无需下载安装即可使用,非常适合快速触达用户。 在这个"wx-tbk-master"项目中,我们可以预见到以下关键知识点: 1...
在Android开发中,创建一个高度仿真的京东商品详情页是一个挑战性的任务,涉及到多个技术点和组件的集成。本文将详细解析"Android-精仿京东商品详情页效果支持左右滑动上下滑动"这一项目的核心知识点,帮助开发者...
在淘宝商户端发布商品时,动态生成SKU(Stock Keeping Unit,库存量单位)表格是一项重要的功能,它能够帮助商家高效地管理商品的多种属性组合,如颜色、尺寸等,为客户提供更精确的选择。本实例主要讲解如何利用...
在技术实现层面,订单物流自动查询通常涉及到Web开发、后端服务设计、数据库操作和API交互等多个环节。开发者需要掌握HTTP请求、JSON数据解析、异步处理等技能。此外,为了保护用户隐私和系统安全,还需要考虑如何...
本项目旨在开发一个高效、安全且易于维护的在线购物系统,以满足用户的需求并提升商家的服务水平。 #### 二、国内外研究现状 目前,国内外对在线购物系统的研发主要集中在提高用户体验、增强安全性以及优化后端...
3. **数据绑定**:观察WXML和WXSS如何通过数据绑定实现视图和数据的同步更新。 4. **事件处理**:学习如何在JavaScript中监听并响应用户的触摸事件,如点击、滑动等,以及如何处理业务逻辑。 5. **页面生命周期**:...
9. **后台管理**:后台管理系统供商家管理商品、订单、用户等,通常采用PHP MVC框架(如Laravel、Yii或CodeIgniter)来组织代码,实现更高效的开发和维护。 10. **数据分析**:PHP商城源码可能还需要集成数据统计和...
在H5页面中,"点击checkbox动态显示table"是一个常见的交互功能,特别是在B2B(Business to Business)场景下,例如模拟淘宝店家定义商品的SKU(Stock Keeping Unit,库存量单位)设置。这个功能允许用户通过勾选...
本项目以"ASP.NET一种基于C2C模式的网上购物系统的设计与实现"为标题,其核心是构建一个类似于消费者对消费者的电子商务平台,如淘宝或eBay。 1. **C2C模式**:在C2C模式中,消费者可以直接通过网络平台与其他消费...
2、增加了自动301跳转设置,选中的话,将自动把所有绑定的域名跳转到主域名。该功能在后台高级设置里。 3、增加了增加网站LOGO后台配置。该功能在后台高级设置内。 4、修复一个偶尔修改后台能造成配置丢失的情况。 5...