点此查看全部文字教程、视频教程、源代码

本文目录

  • 1. 概述
  • 2. 下载SDK
  • 3. 新建Java Web工程
  • 4. 新建常量类,保存饿了么沙箱环境参数
  • 5. 店铺授权URL
  • 6. 编写Servlet,用于接收回调的授权码
  • 7. 店铺授权
  • 8. 下一步工作

1. 概述

上回讲到在饿了么开放平台注册了账户,并申请资质认证,然后还创建了应用,对开放平台、资质认证、应用不了解的同学还是先去看下上一篇文章吧。

时间拍马而过,10几天过去了,上次申请的资质认证早已通过(如下图),此时可以好好打通下沙箱(测试)环境了,并说下这些乱七八糟的概念到底啥意思,实际上就是很简单的一件事么。

2. 下载SDK

首先要明确,完全没有必要自己封装接口,封装什么报文,封装什么HTTP、HTTPS请求,饿了么提供的SDK都封装好了。除非大哥牛到一个人干到饿了么一大片团队,所以没有必要自己搞起。

高级语言的终极要义就是拿来主义,站在巨人的肩膀上才能凸显王霸之气。

下载SDK非常简单,不过可能有的同学真的不知道该如何下载,没关系我在这里详细描述下。

1、首先从【饿了么开放平台】-【文档中心】-【开发文档】-【sdk使用说明】中点击【Java SDK访问地址】,如果是其他语言的话点击对应链接即可。

2、点击之后跳转到一个叫做Coding的代码托管网站,这个网站有一段介绍如图,可见我们需要一个eleme-openapi-sdk的jar包,这个jar包封装了饿了么API接口。

3,没玩过Maven的同学可能就怒了,什么鬼,怎么下载。其实很简单,从这个地址:饿了么SDK下载
点击如图按钮下载即可,如果想了解下maven的可以百度下,我建议暂时不用了解了,先把主要任务做好。

4,下载完毕后就OK了,就是这个文件啦:

3. 新建Java Web工程

1、为啥要新建web工程,直接建个控制台程序不成吗?不成,这里主要牵扯到饿了么平台通过回调开发者程序以返回一些信息,既然是回调,就是开放平台调咱们写的程序,咱们得提供一个地址让他调,所以得建个Web工程。

2、新建Web工程这个具体过程不讲了,这里用Eclipse建一个名为ElemeWebDemo的Dynamic Web Project。

3、新建一个org.panda.eleme.api用于放置饿了么相关代码,并将之前下载的jar包放到web-inf/lib下,这样就可以在工程中使用这个jar包了。

4. 新建常量类,保存饿了么沙箱环境参数

现在我们有一个应用,知道应用的Key和Secret,我们通过这两个参数跟饿了么确认我们开发者的身份(相当于饿了么开放平台给开发者的用户名和密码)。

然后,作为一个应用,最后肯定要对接店铺,饿了么会给每个店铺,这里不管是测试店铺还是正式上线的店铺,分配店铺编号等参数,开发者也需要知道对接店铺的参数才行。

所以此时我们需要建立一个常量类,保存这些参数。

1、第一步就是新建一个常量类,如下图,需要注意参数不能为空哦,真实的参数值要按对应关系从下图中找出后填写到常量类中,此处为了隐私我写的是空的和-1而已。

package org.panda.eleme.api;
/*** 饿了么-常量类* @author easypanda* @since 2018-03-23*/
public class ElemeConstants {//标志是否为沙箱环境public final static boolean IS_SANDBOX=true;//沙箱环境参数public final static String SANDBOX_APP_KEY="";//对应Key 表示沙箱环境的应用Keypublic final static String SANDBOX_APP_SECRET="";//对应Secret 表示沙箱环境的应用Secretpublic final static long SANDBOX_STORE_ID=-1;//对应沙箱环境店铺ID public final static String SANDBOX_STORE_URL="";//对应沙箱环境店铺URLpublic final static String SANDBOX_STORE_PASS="";//对应沙箱环境店铺密码public final static String SANDBOX_REDIRECT_URL="";//对应沙箱环境回调地址URL//正式环境参数 暂时么有
}

2、OK那么上面这些沙箱环境参数从哪里来的呢,其实就是【饿了么开放平台】-【管理中心】-【沙箱环境】里面的,如图:

3、这里需要注意授权回调地址暂时先不用管。

5. 店铺授权URL

好了,此时我们已经掌握了沙箱环境的应用参数、沙箱环境的店铺参数。在实际过程中,我们可能只是开发者,自己并没有店铺,只是测试环境下一起给我们提供了而已。

而不管是测试还是正式环境,店铺都需要给应用授权后,应用才能凭借授权码访问该店铺的数据。现在说下具体的授权过程。

1、首先封装一个ElemeUtil工具类,保存一些对接饿了么常用方法。

第一个方法就是获取Config,这个Config封装了应用信息,我们在跟饿了么交互时通过这个Config类的对象告知我们的应用信息。

好比之前我们要抛一个请求到http://饿了么.开放平台?测试=是&ID=1&SECRET=2&具体业务=123,现在我们不用这么麻烦了,把参数传到Config里调用api就好了,简而言之:把参数放到该放的位置然后调用方法就行了。

2、封装获取Config的方法如下,可见饿了么只需要知道是否测试环境、Key、Secret三个参数就行了。

/*** 饿了么-工具类* @author easypanda* @since 2018-03-22*/
public class ElemeUtil {/*** 获取配置类* @param isSandbox 是否沙箱* @return*/public static Config getConfig(boolean isSandbox){Config config=null;if(isSandbox==true){config=new Config(isSandbox,ElemeConstants.SANDBOX_APP_KEY,ElemeConstants.SANDBOX_APP_SECRET);}else{// TODO 填充正式环境数据}return config;}

3、获取授权URL。

店铺要给开发者授权,是通过一个地址,店铺登录这个地址,输入店铺的用户名和密码点“确定授权”就OK了。开发者如果自己有店铺,就可以自己打开URL自行授权;开发者如果是对接别人的店铺,就把这个授权URL发给店铺管理者,让他们登录后输入用户名和密码授权。

说了半天,要通过程序生成这个URL,SDK已经封装了,我们再简单封装如下:

public class ElemeUtil {//前文已经写过的方法此处不再列出/*** 获取店铺授权URL地址* @desc 每次调用会产生一个新的授权码 需要记录code作为后续凭证 */public static String getAuthUrl(Config config){OAuthClient client = new OAuthClient(config);String authUrl = client.getAuthUrl(ElemeConstants.SANDBOX_REDIRECT_URL, "all", "1234");return authUrl;}/*** 获取并输出授权URL到控制台* @param args*/public static void main(String[] args){Config config=getConfig(true);String url=getAuthUrl(config);System.out.println(url);}
}

这里面有一个方法不好理解,就是OAuthClient.getAuthUrl(String redirect_uri, String scope, String state)

这里要仔细解释下,scope为all表示商户授权所有权限。state为1234就是一个验证标志,主要是怕别人欺骗店铺用了假的授权URL,当然此处想不明白的话state随便写一个完全不必理会也行。

最重要的就是redirect_uri,也就是授权回调地址。我们在调用OAuthClient.getAuthUrl这个饿了么封装的方法时,将redirect_uri作为参数告诉了饿了么开放平台,然后饿了么返回给我们一个授权URL,这个URL给店铺后店铺通过用户名密码授权,授权后会产生一个授权码code,这个code才是我们应用能掌握店铺的钥匙。而这个认证码并不是店铺点了之后就看到的,而是会发送到回调地址上。

OK,现在应该是比较清晰了,回调地址应该是我们开发者自己的一个服务地址,比如是我们的一个Servlet的地址,用于接收饿了么开放平台推送的授权码code。然后我们要生成一个授权URL,这个URL用于发送给店铺给我们的应用授予操作店铺数据的权限。

6. 编写Servlet,用于接收回调的授权码

1、新建一个servlet如下:

package org.panda.eleme.api;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/*** 饿了么-Servlet* @author easypanda* @since 2018-03-23*/
@WebServlet("/ElemeServlet")
public class ElemeServlet extends HttpServlet{/*** 饿了么授权回调在此处响应,主要是获取授权码code*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=UTF-8");  response.getWriter().write("<br>ElemeServlet.doGet..");String method=request.getParameter("method");//响应授权回调if("auth_back".equals(method)){String code=request.getParameter("code");String state=request.getParameter("state"); response.getWriter().write("<br>code:"+code);response.getWriter().write("<br>state:"+state);}response.getWriter().flush();response.getWriter().close();}
}

2、分析下这个Servlet的访问地址

如果是在本地Tomcat部署则,则访问地址应该为:
http://localhost:8080/ElemeWebDemo/ElemeServlet
如果将Tomcat部署到IP为xxx.xxx.xxx.xxx的服务器上,且端口改为80(80为默认端口,可以省略),则访问地址为
http://xxx.xxx.xxx.xxx/ElemeWebDemo/ElemeServlet
OK,如果服务器具有域名www.xxx.com,且端口改为80(80为默认端口,可以省略),则访问地址为:
http://www.xxx.com/ElemeWebDemo/ElemeServlet

此处笔者的项目是有域名的,为了隐私起见,用www.xxx.com代替。

3、因为method为auth_back时,才输出code和state(主要使用code,state为调用getAuthUrl方法时开发者指定的随机字符串),所以我们配置到ElemeConstants类里的地址应该如下:

http://www.xxx.com/ElemeWebDemo/ElemeServlet?method=auth_back;//此处www.xxx.com改为部署到服务器的真实可访问地址

4、同时在【开放平台】-【管理中心】-【沙箱环境】的回调地址URL里面,也配上地址:http://www.xxx.com/ElemeWebDemo/ElemeServlet?method=auth_back;//此处www.xxx.com改为部署到服务器的真实可访问地址

7. 店铺授权

1、运行ElemeUtil 的main方法,在控制台拿到了咱们的授权 URL:

2、正常情况下,将该URL发给真实店铺的管理人员,让其登录授权,此时我们沙箱环境下自己就有一个测试店铺。

所以自己从浏览器输入该链接,打开对应网址,如下,将【管理中心】-【沙箱环境】中的【测试店铺账号】和【测试店铺密码输入】后,点击登录,在点击【同意授权】。

3、点击【同意授权】

4、点击后,饿了么会将该店铺的授权码(code)发送到回调URL,也就是之前咱们编写的ElemeServlet。
ElemeServlet会显示饿了么开放平台发送过来的code。如下图:

8. 下一步工作

OK,至此我们拿到了店铺的授权码,这样我们就可以通过饿了么封装的SDK对饿了么进行操作了。

稍微总结下:

Config里面包含了开发者应用的信息,授权码code包含了店铺授权的信息,将这两个参数和请求内容抛送给饿了么平台,饿了么就知道是哪个开发者请求哪个店铺的哪方面数据,而且有code的就表示店铺同意该开发者使用店铺数据。

妥妥的,没毛病。

下一步,咱就有权限了,去操作数据去。

饿了么开放平台接入(2)——使用Java对接店铺相关推荐

  1. 开放java平台允许访问_饿了么开放平台接入(2)——使用Java对接店铺

    概述 上回讲到在饿了么开放平台注册了账户,并申请资质认证,然后还创建了应用,对开放平台.资质认证.应用不了解的同学还是先去看下上一篇文章吧. 时间拍马而过,10几天过去了,上次申请的资质认证早已通过( ...

  2. 饿了么开放平台接入(1)——开放平台注册与使用

    点此查看全部文字教程.视频教程.源代码 本文目录 0. 序言 1. 背景 2. 注册账户 3. 资质认证 4. 创建应用 4.1 应用的概念 4.2 应用种类 4.3 应用的具体信息 5. 应用的测试 ...

  3. 小度音箱对接之DuerOS开放平台智能家居技能Java对接Demo实现

    近期调研中,编写了个简单的Demo,对接DuerOS的智能家居技能. Demo源码地址:https://gitee.com/mylitboy/link-smart-speaker-demo 介绍 小度 ...

  4. 关于NetCore+饿了么开放平台+奇门+聚石塔对接的解释说明

    淘宝R2去模糊化+聚石塔+奇门 速卖通API + 奇门 + 聚石塔 完整流程 前言 无 准备 1.账号注册链接 饿了么:https://open.shop.ele.me/ 奇门:https://con ...

  5. 对接饿了么开放平台(Java)

    背景 最近在做一个项目,我负责对接饿了么开放平台,这也是第一次尝试接入开放平台,走了许多弯路,最后还是成功接入了. 这里借鉴了几篇博客,感谢大佬的指路. 关于注册和申请 https://blog.cs ...

  6. 微店开放平台接入指南

    微店开放平台接入指南 1.什么是微店开放平台? 微店平台为ISV和有独立开发能力的店家提供的开发接口,可以独立自主开发出属于自己的应用服务,或者是第三方通用软件服务,跟微信公众平台一个样. 2.类型 ...

  7. 钉钉应用云开发之钉钉开放平台接入

    钉钉应用云开发之钉钉开放平台接入 简介:介绍服务端API及开发工具的使用,使用创建用户接口新建一个用户. 1.首先,我们在钉钉开放平台创建应用https://open-dev.dingtalk.com ...

  8. 百度网盘开放平台接入(Python)

    百度网盘开放平台接入(Python) 百度网盘开放平台接入链接:https://pan.baidu.com/union/doc/nksg0sbfs 接入流程 1.请在官网首页右上角找到登录入口,使用百 ...

  9. 产品 电信nb接口调用_艾礼安NB—IoT产品通过中国电信物联网开放平台接入认证...

    原标题:艾礼安NB-IoT产品通过中国电信物联网开放平台接入认证 近日,从电信部门传来好消息,艾礼安NB-IoT系列产品成功通过了中国电信物联网开放平台接入认证. 艾礼安NB-IoT产品通过电信认证 ...

最新文章

  1. python内置作用域_python中的作用域
  2. Asp2.0下Login.Aspx页面和VS2005登陆控件冲突问题!
  3. 缓存中间件-Memcache命令介绍
  4. 捕鱼分鱼、出售鱼、平分七筐鱼
  5. Ambari安装和汉化(转)
  6. 2006年100款最佳安全工具谱
  7. 没有任何借口——提升职场能力的文章
  8. python基础之列表函数(10)
  9. Java 导出CSV文件及实现web下载CSV
  10. 【python】——数据分布拟合工具包fitter
  11. linux看门狗使用
  12. 提问的智慧-如何明智到找到想要的答案
  13. 前端~css~基准线与行高、行距和半行距/圆角矩形~
  14. 一个运维项目的大概流程,附带20种运维开发工具
  15. VRP基础(华为设备操作系统)
  16. 危险漫步一个月赚多少钱?
  17. android 微信朋友圈 全功能,Android仿微信朋友圈文字展开全文功能 Android自定义TextView仿微信朋友圈文字展开全文功能...
  18. 从零开始的数模(二十)变异系数法
  19. redis的消息队列(面试题)
  20. 虚拟主机和物理服务器有什么不同

热门文章

  1. 【weex】h5weex-example
  2. 成本中心通过利润中心来和公司代码对应
  3. HTML5+CSS大作业——明星个人主页(15页) 创作主页
  4. 以色列通过空袭回应哈马斯的黑客攻击
  5. windows编程之计时器
  6. 1.20——golang环境配置(在Mac OS上)【没用过】
  7. 著名的三门问题,是在 “胡扯” 吗?
  8. pythonurllib库获取yahoo财经数据_用Python从Yahoo财经中获取历史数据
  9. 精心推荐-自动化软件
  10. 为啥总感觉前端有时候学不懂,想努力学又学不进去?