天翼开放平台地址:http://open.189.cn/
需要注册,以开发者身份进行实名制注册,上传身份证电子照,等待审核。
该平台提供了一系列的功能对外开放,慢慢研究。
第一,授权接口
调用地址,GET/POST方式:
https://oauth.api.189.cn/emp/oauth2/v2/authorize
作用:
获取天翼开放平台的授权码AC-Authorization Code
获取途径:
在天翼的开放平台注册账号,完成身份认证;
创建应用,将分配一个天翼开放平台平台上的唯一标识,即app_id
天翼开放平台颁发给应用的密钥信息,app_secret
第二,令牌接口
调用地址,POST方式:
https://oauth.api.189.cn/emp/oauth2/v2/access_token
作用:
获得最终的AT访问令牌
获取途径:
凭借AC授权码来换取
平台将返回访问令牌access_token及其所对应的更新令牌refresh_token。
第三,获取信任码
请求地址,Get方式:
http://api.189.cn/v2/dm/randcode/token
作用:
获取一个临时的信任码Token(该信任码在调用"验证码下发"接口是使用)
该信任码在3分钟内或者被使用1次后失效
请求参数:
app_id 平台分配给应用的id
access_token 由令牌接口获取
timestamp 当前时间戳
sign 一个签名,由其它参数一起参与计算得出
响应结果:
token 返回一个新的令牌,用来在下发短信是使用
第四,验证短信下发
请求地址,POST方式:
http://api.189.cn/v2/dm/randcode/send
功能说明:
1.向指定的手机号发送一条验证码短信
2.平台向“验证码通知地址”推送验证码内容
平台回调地址:
http://10.0.61.66:8080/sms/servlet/rcReceive
刚写的一个servlet,作为平台返回验证码时调用的接口
RandomCodeServlet.java
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.gc.sms.util.JsonUtil;
import com.gc.sms.util.StringUtil;
public class RandomCodeServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String identifier = req.getParameter("identifier");
String rand_code = req.getParameter("rand_code");
String res_code = "0";//0 获取成功
if(StringUtil.hasNull(identifier, rand_code)) {
res_code = "1";// 1 获取失败
}
resp.setContentType("application/json;charset=UTF-8");
PrintWriter pw = new PrintWriter(resp.getOutputStream());
Map<String,Object> map = new HashMap<String,Object>();
map.put("res_code", res_code);
String jsonString = JsonUtil.toJson(map);
pw.print(jsonString);
pw.flush();
}
}
package com.gc.sms.util;
import java.util.Map;
import emp.tool.json.JSONException;
import emp.tool.json.JSONObject;
public class JsonUtil {
public static String toJson(Map<String,Object> paramsMap) {
JSONObject json = new JSONObject();
try {
for (String key : paramsMap.keySet()) {
json.put(key, paramsMap.get(key));
}
return json.toString();
}catch(JSONException e) {
e.printStackTrace();
throw new RuntimeException("转换json时出现错误", e.getCause());
}
}
}