天翼开放平台地址: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(); } }JsonUtil.java
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()); } } }