为何要授权:
淘宝上有很多卖家店铺。现在淘宝应用市场有一个第三方应用。这个应用可以服务卖家店铺。我们知道第三方应用是不能随便读取卖家店铺的信息,比如订单、商品信息。现在卖家可以通过授权限制性的开放信息给第三方应用!
首先isv要在淘宝开放平台上申请一个应用,我申请的是百川应用。
如果没申请过应用,淘宝帐号登录到开放平台后点击控制台在右上角点击创建应用即可!
这里填写的回调地址就是用来获取授权码的,进而通过授权码获取access_key和refresh_key,点击测试
弹出以下页面
这里点击授权输入手机验证码后将跳到回调地址页面,就是第一张图片填写的回调地址!
在这个回调地址后会跟上授权码code的值!
http://localhost:8080/openapi/taobao/oauth.vm?code=Q3dEuVloHtME9q67FsQLRtsegtrdso8&state=
有了授权码后,我们直接调用淘宝的接口,就能获取到访问令牌access_token
以下获取令牌代码参考http://open.taobao.com/
测试时需将test替换为自己申请应用获得的参数!client_id对应appkey client_secret对应appSecret
package com.xudong.top.test; /** * 文件名:OpenOauth.java * * 版本信息: v1.0 * Copyright Corporation 2015 * 版权所有 * */ import java.io.IOException; import java.util.HashMap; import java.util.Map; import com.taobao.api.internal.util.WebUtils; //引用top sdk public class OpenOauth { public static void main(String[] args) { String url="https://oauth.taobao.com/token"; Map<String,String> props=new HashMap<String,String>(); props.put("grant_type","authorization_code"); props.put("code","回调页面生成的code"); props.put("client_id","test"); props.put("client_secret","test"); props.put("redirect_uri","http://localhost:8080/openapi/taobao/oauth.vm"); props.put("view","web"); String s=""; try{s=WebUtils.doPost(url, props, 30000, 30000); System.out.println(s); }catch(IOException e){ e.printStackTrace();} } }
换取access_token返回值示例
{
"w2_expires_in": 0,
"taobao_user_id": "263685215",
"taobao_user_nick": "%E5%95%86%E5%AE%B6%E6%B5%8B%E8%AF%95%E5%B8%90%E5%8F%B752",
"w1_expires_in": 1800,
"re_expires_in": 0,
"r2_expires_in": 0,
"expires_in": 86400,
"token_type": "Bearer",
"refresh_token": "6200e1909ca29b04685c49d67f5ZZ3675347c0c6d5abccd263685215",
"access_token": "6200819d9366af1383023a19907ZZf9048e4c14fd56333b263685215",
"r1_expires_in": 1800
}