亚马逊SP-API对接-网站授权

亚马逊SP-API对接-网站授权

  1. 亚马逊sp-api文档地址:https://developer-docs.amazon.com/sp-api

  2. 授权
    SCPN授权
    1.我们发起授权操作
    2.销售合作伙伴审核并同意我们的请求,并回调我们系统,并添加以下查询参数:amazon_callback_uri amazon_state selling_partner_id(销售合作伙伴ID)
    3.我们系统处理完毕重定向到亚马逊接口 携带参数 redirect_uri amazon_state state
    4.亚马逊处理后重定向回我们系统(注册应用程序时指定的第一个) 并添加参数spapi_oauth_code
    5.我们系统处理完成,spapi_oauth_code参数通过https://api.amazon.com/auth/o2/token 换取 access_token
    6.后续操作api使用access_token
    网页授权
    1.我们的系统设置一个授权按钮,销售合作伙伴点击按钮
    2.我们的系统重定向到亚马逊登录系统并携带参数redirect_uri,state
    3.销售合作伙伴登录成功后,亚马逊回通过redirect_uri 携带的路径并拼接参数state,selling_partner_id,mws_auth_token,spapi_oauth_code 回调我们系统
    4.我们系统处理完成,spapi_oauth_code参数通过https://api.amazon.com/auth/o2/token 换取 access_token
    5.后续操作api使用access_token
    自我授权
    1.销售合作伙伴去亚马逊页面选择要授权的用户,同意授权之后,会生成访问令牌spapi_oauth_code
    2.线下给到我们,spapi_oauth_code参数通过https://api.amazon.com/auth/o2/token 换取 access_token
    3.后续操作api使用access_token

  3. 网页授权步骤
    按钮跳转地址:https://sellercentral.amazon.com/apps/authorize/consent?application_id=[appid]&state=[我们系统生成]&redirect_uri=[回调地址]
    亚马逊回调地址:https://[回调地址]?state=[我们系统生成]&selling_partner_id=[销售合作伙伴ID]&spapi_oauth_code=[换取刷新token的code]
    处理spapi_oauth_code:通过参数spapi_oauth_code调用https://api.amazon.com/auth/o2/token 换取 refresh_token
    保存数据: 由于access_token有时效性,所以此次只保存refresh_token
    注:[回调地址]在亚马逊平台配置,默认会通过application_id去检索回调地址。也可以在按钮跳转地址加入redirect_uri参数去指定
    调用代码:

    public Map getRefreshToken(String spapi_oauth_code, RestTemplate restTemplate) {
        MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
        headers.add("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
        headers.add("Host","api.amazon.com");
        String param= "grant_type=authorization_code&code="+spapi_oauth_code+"&client_id=xxxx&client_secret=xxx";
        HttpEntity httpEntity = new HttpEntity<>(param, headers);
        logger.error("授权请求参数:{}{}",JsonUtil.objectToString(headers),param);
        ResponseEntity<Map> response = restTemplate.postForEntity("https://api.amazon.com/auth/o2/token", httpEntity, Map.class);
        Map body = response.getBody();
        body.put("param",param);
        logger.debug("授权返回参数:{}",JsonUtil.objectToString(body));
        return body;
    }
  • 总结:本次授权是合作伙伴授权给我们,授权成功后,我们能够拿到合作伙伴的数据。此次文档仅供参考
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值