java 友盟通过token获取手机号

友盟官方文档 https://developer.umeng.com/docs/143070/detail/144783

代码中用到的友盟appKey 获取方式 要区分安卓和ios 

https://ai.login.umeng.com/platform/601b95faf1eb4f3f9b887f6c/manage/login/5218426a628e4380bcbd43ace24d83e9?step=2

 

代码中用到的阿里appKey和appSecret 获取方式

https://market.console.aliyun.com/imageconsole/index.htm?spm=5176.product-detail.content.2.72f152a2uM336w#/bizlist?_k=m7xmny

 代码

package com.alibaba.umeng.databankprivate;

import com.alibaba.fastjson.JSONObject;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.http.Header;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;


public class MyTest {
    public static void getToken() throws Exception {
        String umAppkey = ""; //友盟appkey ios  需要区分是安卓还是IOS  
		String umAppkey = ""; //友盟appkey 安卓 需要区分是安卓还是IOS  
        String appKey = "203915191";  //阿里key
        String appSecret = "rtopEPaS6LhU5pkmdpngfy6ToEIhwLJx"; //阿里secret
        String token = "eyJjIjoiT2VxeUFHVDZYS1R3bXBJN3Z6SHNJK2JacUJjYk1IcjM3elNSSkhkU0ZQWGFwUDdYdDlwZFB4OGZoMGcwNlBkcU5zZGJFZGJkdlI0clxuMXA3VzRqMlJsSHBROEx0QUowQURobjFtOHlrSU1oTGxudDdvaTUzcjhyZGFoWXlmWkhzcTd3Zk9WY0s2SzhIMVQxaERiV1wvd2wzUmNcbisrNEkwMG1GZHJXQngwU0VTakdJcDBPTlFmRTg2TTVEQityNzJHVktCSHR0dkdETzFIYys2ZkJpMVRDc2pmb2htQzFXVXIrTE1HSDVcbjhDcWd2K0RtbGc3NGhNSTYwOTFjRzVTXC92XC9xN2NwMnVCVXdmTWlweU5iOXpyNTIweTZDSDRxamVoeVpoTkdZelhaN3JkVlZuS1dxUlxueHhURlQrTUZEYmlVYzkrUmxvOERyOE9hXC9jbXlRSk55eXB1bkw0NDJHMWZsekNPK0p6STVjMGF5ZEdLSnlGTkVaR2krUXdDMHJuY2lcbnJEYUpEaVlBUXpkME51eWJLb1NvQ3ViZE5TcUcyc2p5dmErUkFISmN6K0dFWFJBaVdQQytnekxweWs1ZWE5d2tZaGdlZk8ybE8wYUdcbkFwSFYzTEJzeldwbkZjanhhcG1raFhISlllSlM1RXQ3MVNwb1lFb09heVFYWDhaRFU4bERIYld3aW5oMGZLR3p6RE5CYjYzNVdUbVpcbmRZSTlQZmdmQ0FFczdhT09XNVZEN0FYcVpwK3hSQVQ2cjd2dFlFTTA4a2JBNkxXRTZldGM3ZUw4aFpqbWhjV3k0ZE9PVVp4V3pPVWZcbnliMEtHQkV4ZjdzPVxuIiwiayI6ImdscENSSjl3REpoS2xxNUdJR1FOZEZqOHhvTDMwUDg0WVhTa3QzZHd3ZHA3UVFoeG5nUXdaN25rYklOYTY5UXpZUWo0TnBUUk1WQmoxSHFYdjZFQ2I1V1wvVEJkU1dCeVJvbXkySEFybXhFc3BTSHUrUlJmemF1bVRIRG0wMDZcL2p3OXNYWklyUG5uYVJ5a2pnN3h1M2t5NVRidTJiQVlrek9Fb09TYTBCZGU4Yk9rSjY1bUJtMnFxSit1M0RVWCtOOUJKWW1NV1hvWmJ4N0JKZzlVeU0xRXlocjZMSkFUYURaNHV0N1BRcXNZdmF1eEM3RjBKYW0rRkd3ZUZXRjNoXC9Od2U2MXhQak9qa1wvSWl2TjFBSkpTRUhWd3ZMKzV6SnZKbE9PQUVlYzVYbVhrZXUrOXh3aW16TmFjTENYV3JLdTFkTWNyOElhYkhqM292TmFqUlpVbGc9PSIsIm8iOiJBbmRyb2lkIn0=";
        String url = "https://verify5.market.alicloudapi.com/api/v1/mobile/info?appkey=" + umAppkey;
        HttpPost httpPost = new HttpPost(url);
        /**
         * body
         */
        JSONObject object = new JSONObject();
        object.put("token", token);
        StringEntity stringEntity = new StringEntity(object.toJSONString(), StandardCharsets.UTF_8);
        httpPost.setEntity(stringEntity);
        /**
         * header
         */
        httpPost.setHeader("Content-Type", "application/json; charset=UTF-8");
        httpPost.setHeader("Accept", "application/json");
        httpPost.setHeader("X-Ca-Version", "1");
        httpPost.setHeader("X-Ca-Stage", "RELEASE");
        httpPost.setHeader("X-Ca-Key", appKey);
        httpPost.setHeader("X-Ca-Timestamp", String.valueOf(System.currentTimeMillis()));
        httpPost.setHeader("X-Ca-Nonce", UUID.randomUUID().toString());
        httpPost.setHeader("Content-MD5", Base64.encodeBase64String(DigestUtils.md5(object.toJSONString())));
        httpPost.setHeader("X-Ca-Signature-Headers", "X-Ca-Version,X-Ca-Stage,X-Ca-Key,X-Ca-Timestamp");
        /**
         * sign
         */
        String stringToSign = getSignString(httpPost);
        System.out.println(stringToSign);
        Mac hmacSha256 = Mac.getInstance("HmacSHA256");
        byte[] keyBytes = appSecret.getBytes(StandardCharsets.UTF_8);
        hmacSha256.init(new SecretKeySpec(keyBytes, 0, keyBytes.length, "HmacSHA256"));
        String sign = new String(Base64.encodeBase64(hmacSha256.doFinal(stringToSign.getBytes(StandardCharsets.UTF_8))));
        httpPost.setHeader("X-Ca-Signature", sign);
        /**
         * execute
         */
        CloseableHttpClient httpclient = HttpClients.createDefault();
        try {
            CloseableHttpResponse response = httpclient.execute(httpPost);
            System.out.println(response);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static String getSignString(HttpPost httpPost) {
        Header[] headers = httpPost.getAllHeaders();
        Map<String, String> map = new HashMap<>();
        for (Header header : headers) {
            map.put(header.getName(), header.getValue());
        }
        return httpPost.getMethod() + "\n" +
                map.get("Accept") + "\n" +
                map.get("Content-MD5") + "\n" +
                map.get("Content-Type") + "\n\n" +
                "X-Ca-Key:" + map.get("X-Ca-Key") + "\n" +
                "X-Ca-Stage:" + map.get("X-Ca-Stage") + "\n" +
                "X-Ca-Timestamp:" + map.get("X-Ca-Timestamp") + "\n" +
                "X-Ca-Version:" + map.get("X-Ca-Version") + "\n" +
                httpPost.getURI().getPath() + "?" + httpPost.getURI().getQuery();
    }

    public static void main(String[] args) throws Exception {
        getToken();
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zengsange

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值