# Python SDK 接入指南 & CHANGELOG
## 接入指南
1.安装eleme sdk依赖包,引入依赖
2.利用sdk.config 模块初始化设置沙箱环境,key,secret 如果是企业应用还需设置callback_url
利用sdk.oauth 模块完成oauth授权测试
利用sdk.api 模块完成接口调用测试
启动sdk自带的simpleserver 帮助完成接收饿了么推送消息业务处理
3.上线前将config.py中初始值__sandbox,key和secret以及callback_url填为正式环境
## 代码示例
### 企业应用
- 第一步 安装sdk 包,引入模块
sudo pip install eleme.python.sdk
```python
from sdk.library.oauth.oauth_client import OAuthClient
from sdk.library.apis.shop_service import ShopService
from sdk.library.protocol.rpc_client import RpcClient
from sdk.config import Config
```
- 第二步 实例化一个oauth2.0客户端授权模式的授权对象
```python
oauth_client = OAuthClient(Config.get_app_key(), Config.get_secret(), Config.get_callback_url())
```
- 第三步 获取生成授权url
```python
auth_url = oauth_client.get_auth_url(state, scope)
```
- 第四步 在授权url中同意授权后,会跳转到CALLBACK_URL的页面,在通过链接上的参数,获取授权码code
- 第五️步 通过code获取token对象,此步获取到的token对象可在有效期内一直使用,不用每次调用前都去获取一次,建议应用授权一次后存放到全局缓存中
```python
token = oauth_client.get_token_by_code(code)
```
- 第六步 实例化远程调用的client对象
```python
rpc_client = RpcClient(token, Config.get_app_key(), Config.get_secret(), Config.get_api_server_url())
```
- 第七步 实例化一个服务对象
```python
shop_service = ShopService(rpc_client)
```
- 第八步 调用服务方法,获取资源数据
```python
shop = shop_service.get_shop(123456)
```
- 第九步 如果token过期,通过refresh_token换取新的token
```python
refresh_token = token["refresh_token"]
token = oauth_client.get_token_by_refresh_token(refresh_token, scope)
```
### 个人应用
- 第一步 安装sdk 包,引入模块
sodu install eleme.openapi.sdk
```python
from sdk.oauth.oauth_client import OAuthClient
from sdk.apis.shop_service import ShopService
from sdk.protocol.rpc_client import RpcClient
from sdk.config import Config
```
- 第二步 实例化一个oauth2.0客户端授权模式的授权对象
```python
oauth_client = OAuthClient(Config.get_app_key(), Config.get_secret(), Config.get_callback_url())
```
- 第三️步 获取token对象,此步获取到的token对象可在有效期内一直使用,不用每次调用前都去获取一次,建议应用授权一次后存放到全局缓存中
```python
token = oauth_client.get_token_in_client_credentials()
```
- 第四步 实例化远程调用的client对象
```python
rpc_client = RpcClient(token, Config.get_app_key(), Config.get_secret(), Config.get_api_server_url())
```
- 第五步 实例化一个服务对象
```python
shop_service = ShopService(rpc_client)
```
- 第六步 调用服务方法,获取资源数据
```python
shop = shop_service.get_shop(123456)
```
### simpleServer 使用方式
- 第一步 安装sdk 包,引入模块
sodu install eleme.openapi.sdk
```python
from simpleserver.server import start_server
from sdk.config import Config
```
- 第二步 初始化config对象,启动服务
```python
start_server()
```
启动服务后 会监听三个localtion
1.get /listenMessage 响应饿了么平台的url校检
2.post /listenMessage 接收饿了么平台的消息推送
3.get /callback 授权回调地址,处理授权逻辑
4.post /getUserInfo 获取当前的用户信息和店铺信息
## CHANGELOG:
### [v1.1.2]
Release Date : 2017-02-09
- [BugFix] 修复了token获取的问题
### [v1.1.1]
Release Date : 2017-01-24
- [Feature] 重新支持个人应用授权,在oauth_client中添加get_token_in_client_credentials方法
### [v1.1.0]
Release Date : 2017-01-24
- [Feature] 更新了授权模式为企业应用授权,个人应用授权的方法不在支持,对应的工具类由client_credentials更换为oauth_client
### [v1.0.4]
Release Date : 2017-01-19
- [Feature] 新增UserService
### [v1.0.3]
Release Date : 2017-01-04
- [Improvement] token传入的时候由字符串改为对象,并添加了本地校验
### [v1.0.2]
Release Date : 2016-12-21
- [Improvement] updateItem添加了参数categoryId
### [v1.0.1]
Release Date : 2016-12-02
- [Improvement] 升级使用python3
### [v1.0.0]
Release Date : 2016-11-19
- [Feature] sdk完整实现
- [Feature] 增加接口调用代码示例 demo/main.py