PHP解密抖音手机号

23,256 阅读1分钟

抖音获取手机号:https://developer.open-douyin.com/docs/resource/zh-CN/mini-app/develop/guide/open-capabilities/acquire-phone-number-acquire

抖音解密文档:https://developer.open-douyin.com/docs/resource/zh-CN/mini-app/develop/guide/open-capabilities/sensitive-data-process

// 获取前端请求参数
$input = file_get_contents('php://input');
$param = json_decode($input, true);

// 抖音appid与抖音secret
$data['appid'] = $douyin_appid;
$data['secret'] = $douyin_secret;
$data['code'] = $param['code'];

$url = 'https://developer.toutiao.com/api/apps/v2/jscode2session';
// 请求需要设置请求头为'Content-Type: application/json; charset=utf-8',参数为json格式
// 为获取session_key
$result = douyin_request($url, json_encode($data));

// 用户session_key
$key = $result['data']['session_key'];
$sign = $param['encryptedData'];
$iv = $param['iv'];

/**
 * 需要参数
 * @param string $sign [前端传过来的encryptedData]
 * @param string $key [用户的session_key]
 * @param string $iv [前端传过来的iv]
 */
$result = openssl_decrypt(base64_decode($sign, true), 'AES-128-CBC', base64_decode($key), OPENSSL_RAW_DATA, base64_decode($iv));
// 转数组
$phone = json_decode($result, true);
var_dump($phone);

// curl请求
function douyin_request($url, $data = [])
{
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt(
        $curl,
        CURLOPT_HTTPHEADER,
        array(
            'Content-Type: application/json; charset=utf-8',
        )
    );
    $output = curl_exec($curl);
    curl_close($curl);
    return json_decode($output, true);
}