java 友盟通过token获取手机号

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

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

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

java 友盟通过token获取手机号

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

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

java 友盟通过token获取手机号

代码

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 map = new HashMap<>();
        for (Header header : headers) {
            map.put(header.getName(), header.getValue());
        }
        return httpPost.getMethod() + "
" +
                map.get("Accept") + "
" +
                map.get("Content-MD5") + "
" +
                map.get("Content-Type") + "

" +
                "X-Ca-Key:" + map.get("X-Ca-Key") + "
" +
                "X-Ca-Stage:" + map.get("X-Ca-Stage") + "
" +
                "X-Ca-Timestamp:" + map.get("X-Ca-Timestamp") + "
" +
                "X-Ca-Version:" + map.get("X-Ca-Version") + "
" +
                httpPost.getURI().getPath() + "?" + httpPost.getURI().getQuery();
    }
    public static void main(String[] args) throws Exception {
        getToken();
    }
}


展开阅读全文

页面更新:2024-03-15

标签:阿里   手机号   代码   方式   文档   官方   科技

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top