虎符 云鼎DMP投放 服务接入说明
本文档描述了用户接入虎符 云鼎DMP投放 官方赋能场景步骤。
1、入驻云鼎
虎符作为云鼎的一个业务组件,接入虎符官方赋能场景需要先入驻云鼎(入驻指引:https://yd-doc.jdcloud.com)提交入驻审核后联系云鼎运营审核,如已入驻跳过此步骤。
2、申请接入 云鼎DMP投放 场景
入驻成功后登陆虎符控制台,虎符控制台地址:https://hufu-yd-console.jdcloud.com/
2.1、创建虎符应用
虎符网关以应用维度进行授权管理的,接入场景前首先需要创建一个虎符应用。
(1)点击左侧菜单栏“应用管理”按钮进入虎符应用列表界面,点击“创建应用”按钮进入创建应用界面。
(2)进入创建应用界面后填写应用相关信息,业务域选择“零售”,应用名称自定义,应用类型选择 “生态合作伙伴应用”,点击授权类型,选择一个京东云Access Key,如果没有,前往AccessKey管理页面:https://uc.jdcloud.com/account/accesskey创建。 * 注:虎符应用依赖于京东云accessKey,如果删除或禁用京东云accessKey,会导致虎符应用不可用!
2.2、申请接入
(1)点击左侧菜单栏“官方赋能”->“场景列表”,接入官方赋能场景列表,选择“云鼎DMP投放”场景,点击“申请接入”按钮,选择上一步创建的应用。
(2)申请接入后,跳转到“我的场景”界面,找到对应的接入申请应用,查看是否授权(已授权分组列),如果是空,需要联系虎符运营授权,需提供应用的AppKey及申请接入的场景。
未授权状态
已授权状态
2.3、接入管理
接入成功后,进入“接入管理”页面可以查看 api列表信息,调试API,以及查看环境信息、下载SDK。
(1)调试API
(2)下载SDK
3、提交 推送人群申请
完成上述接入过程后,还需发送邮件到 JCloud-YD@jd.com,申请可推送的商家pin
发送邮件模板:
申请开通 dmp 人群投放接口,相关信息如下:
京东云账号PIN:XXX 【https://uc.jdcloud.com/account/basic-info 地址中的 PIN (客户识别码)】
虎符应用名称:XXXX
虎符签名 appKey:XXXXXXXXXXXXXXX
需要推送的精准通Pin及京东店铺名称: 精准通Pin1【京东店铺名称1】,精准通Pin2【京东店铺名称2】,精准通Pin3【京东店铺名称3】
3.1、文件格式说明
人群包要按照规定的格式上传,文件要求gbk编码,一条数据一行,数据不要超过10M的txt文件。
序号 | 数据类型 | 备注 | 输出 |
---|---|---|---|
1 | 用户pin包 | 使用原始pin | pin |
2 | 手机号 | pin | |
3 | 手机号MD5值 | 原始的MD5值 | pin |
4 | 设备ID包 | idfa或imei(大小写均可),支持一个文件中idfa和imei共存 | 设备号MD5值(大写) |
5 | IDFA | 大小写均支持 | 设备号MD5值(大写) |
6 | IMEI | 设备号MD5值(大写) | |
7 | IDFA的MD5 | IDFA转大写后,再转MD5,MD5大小写均支持 | 设备号MD5值(大写) |
8 | imei的MD5 | 原始的MD5或大写MD5 | 设备号MD5值(大写) |
3.2、限制说明
1、测试环境允许公网调用,线上环境只允许在鼎内调用
2、经过授权的虎符应用才允许提交任务
3、每天只允许提交5次任务
3.2、java 代码示例
目前只发布了测试环境和线上环境,测试环境使用公网地址,线上环境使用VPC地址(鼎内)
/**
* Demo
*/
public class Demo {
private static String accessKeyId = "填写 appkey";
private static String secretKey = "填写 secretKey";
private static CredentialsProvider credentialsProvider = new StaticCredentialsProvider(accessKeyId, secretKey);
private static APIGroupDmpClient client1 = APIGroupDmpClient.builder()
.credentialsProvider(credentialsProvider)
.httpRequestConfig(new HttpRequestConfig.Builder().connectionTimeout(10000)
// 人群包上传请求类型为 流
.contentType(ContentType.APPLICATION_OCTET_STREAM)
.protocol(Protocol.HTTPS).build())
// .environment(new Environment.Builder().endpoint("rpr7q2c28bkj-test.cn-north-1.vpc.jdcloud-api.net").build()) // 测试环境VPC地址
// .environment(new Environment.Builder().endpoint("rpr7q2c28bkj-test.cn-north-1.jdcloud-api.net").build()) // 测试环境公网地址
// .environment(new Environment.Builder().endpoint("rpr7q2c28bkj-preview.cn-north-1.vpc.jdcloud-api.net").build()) // 预发环境VPC地址
// .environment(new Environment.Builder().endpoint("rpr7q2c28bkj-preview.cn-north-1.jdcloud-api.net").build()) // 预发环境公网地址
// .environment(new Environment.Builder().endpoint("rpr7q2c28bkj.cn-north-1.vpc.jdcloud-api.net").build()) // 线上环境VPC地址
.environment(new Environment.Builder().endpoint("rpr7q2c28bkj.cn-north-1.jdcloud-api.net").build()) // 线上环境公网地址
.build();
private static APIGroupDmpClient client2 = APIGroupDmpClient.builder()
.credentialsProvider(credentialsProvider)
.httpRequestConfig(new HttpRequestConfig.Builder().connectionTimeout(10000)
// 提交人群包至精准通请求类型为 json
.contentType(ContentType.APPLICATION_JSON)
.protocol(Protocol.HTTPS).build())
// .environment(new Environment.Builder().endpoint("rpr7q2c28bkj-test.cn-north-1.vpc.jdcloud-api.net").build()) // 测试环境VPC地址
// .environment(new Environment.Builder().endpoint("rpr7q2c28bkj-test.cn-north-1.jdcloud-api.net").build()) // 测试环境公网地址
// .environment(new Environment.Builder().endpoint("rpr7q2c28bkj-preview.cn-north-1.vpc.jdcloud-api.net").build()) // 预发环境VPC地址
// .environment(new Environment.Builder().endpoint("rpr7q2c28bkj-preview.cn-north-1.jdcloud-api.net").build()) // 预发环境公网地址
// .environment(new Environment.Builder().endpoint("rpr7q2c28bkj.cn-north-1.vpc.jdcloud-api.net").build()) // 线上环境VPC地址
.environment(new Environment.Builder().endpoint("rpr7q2c28bkj.cn-north-1.jdcloud-api.net").build()) // 线上环境公网地址
.build();
public static void main (String[] args){
UploadPackageUsingPOSTRequest uploadPlaintextUsingPOSTRequest = new UploadPackageUsingPOSTRequest();
try {
uploadPlaintextUsingPOSTRequest.setJdcloudRequestBody(Files.readAllBytes(Paths.get("test.tmp")));
} catch (IOException e) {
e.printStackTrace();
}
UploadPackageUsingPOSTResponse uploadPlaintextUsingPOSTResponse = client1.uploadPackageUsingPOST(uploadPlaintextUsingPOSTRequest);
System.out.println(new Gson().toJson(uploadPlaintextUsingPOSTResponse));
CommitCrowdUsingPOSTRequest commitCrowdUsingPOSTRequest = new CommitCrowdUsingPOSTRequest();
CommitCrowdRequestVo1 vo = new CommitCrowdRequestVo1();
vo.setFileId(3L);
vo.setExpiredTime("2022-06-01");
vo.setExternalResourceType(1);
vo.setPins(Arrays.asList("test_pin"));
vo.setExternalSystemCrowdName("测试人群包上传20220601");
commitCrowdUsingPOSTRequest.setCommitCrowdRequestVo(vo);
CommitCrowdUsingPOSTResponse commitCrowdUsingPOSTResponse = client2.commitCrowdUsingPOST(commitCrowdUsingPOSTRequest);
System.out.println(new Gson().toJson(commitCrowdUsingPOSTResponse));
}
}